我有一个带有JSON响应的函数。目前,我正在使用完成方法,但是我想在另一个视图中使用JSON数组。如何将这个数组保存为全局变量,或者建议另一种在第二个View中使用该数组的方法。(如果它是真实的,我想摆脱这种完成方法,只使用大量而不总是调用带有完成功能的函数,因为接收回复,我需要等待约5秒)。
func LTE1800(_ completion: @escaping ([[String]]) -> ()) {
let myURLAdress = "myURL"
let myURL = URL(string: myURLAdress)
let task = URLSession.shared.dataTask(with: myURL!) { (data,
response, error) in
guard let dataResponse = data,
error == nil else {
print(error?.localizedDescription ?? "Response
Error")
return }
do{
let jsonResponse = try
JSONSerialization.jsonObject(with:dataResponse, options: []) as!
[String:Any]
guard let jsonArray = jsonResponse["aaData"] as?
[[String]] else {
return
}
completion(jsonArray)
}
catch let parsingError {
print("Error", parsingError)
}
}
task.resume()
}
答案 0 :(得分:0)
通常,您不应该迅速使用可变全局变量。您应该要做的是调用网络请求,然后在完成后根据需要更新UI。委托模式是一种在视图周围传递数据的常见模式。
https://www.raywenderlich.com/477-design-patterns-on-ios-using-swift-part-1-2