gpt4 book ai didi

json - 调用函数将 Json 从 View Controller 解析到其他 View

转载 作者:行者123 更新时间:2023-11-30 11:27:22 25 4
gpt4 key购买 nike

我想从其他 View Controller 中的 View Controller 调用函数。这个函数将解析json并将数据放入结构体中的全局数组中,问题是如果我将函数放入ViewDidAppear中,它将向Web服务发出大量请求,如果我将函数放入ViewDidLoad中它不会下载数据,这是我要调用的函数

@objc func pazienti(completionHandler: @escaping () -> Void) {

let endpoint = MyStruct.endpointpazienti()
ArrayGlobale.listapazienti.removeAll()
guard let url = URL(string: endpoint) else {
print("Error: cannot create URL")
let error = BackendError.urlError(reason: "Could not construct URL")
completionHandler()
//
return
}
let urlRequest = URLRequest(url: url)

let session = URLSession.shared

let task = session.dataTask(with: urlRequest) {
(data, response, error) in
guard data != nil else {
//self.updateUserInterface()
print("Error: did not receive data")
completionHandler()
return
}
guard error == nil else {
completionHandler()
return
}

// let decoder = JSONDecoder()
// do {
// let todos = try decoder.decode([MyStruct].self, from: responseData)
// completionHandler(todos, nil)
// } catch {
// print("error trying to convert data to JSON")
// print(error)
// completionHandler(nil, error)
// }
do
{
let json = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? [[String:Any]] ?? []
print(json)
for x in json
{
print(x["nome"]!)
ArrayGlobale.listapazienti.append(ListaPazienti(nome: x["nome"] as! String, cognome: x["cognome"] as! String, id : x["id"] as! String, data : x["data"] as! String, sesso : x["sesso"] as! String))

//print(ArrayGlobale.listapazienti)
//sleep(4)
}

}catch
{

}
}
task.resume()
ArrayGlobale.action = completionHandler

}

调用这个函数是 self.pazienti { }但我尝试创建一个具有全局函数的扩展类,这将发出一些阻塞服务器的请求。

最佳答案

您没有向我们展示任何会导致问题的代码。如果您选择 viewDidAppear,您可能必须引入一些状态才能知道请求是否已经在进行中(如果是,则不安排另一个 dataTask)。另一方面,您的 viewDidLoad 应该执行您所要求的操作,它应该只被调用一次。

然而,将completionHandler存储在某种全局变量中很可能不仅仅是一个坏主意,而且是一个非常坏主意,除非真的没有其他解决方案它。据我从您的 func pazienti 的设计来看,它似乎位于“错误”的对象内。然而,您提供了很少的代码来真正判断这一点。请至少在问题中添加您的回调代码,以便我修改我的答案。

关于json - 调用函数将 Json 从 View Controller 解析到其他 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50588309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com