我有一个JSON响应函数。此时我正在使用完成方法,但我想在另一个View中使用JSON数组。如何将这个数组保存为全局变量,或建议另一种方式在第二个视图中使用这个数组。(如果它是真的,我想摆脱这个完成方法并使用大量而不是所有时间都回想起完成的函数,因为接收响应我需要等待大约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()
}
通常,您不应该在swift中使用可变全局变量。你应该做的是在完成后调用网络请求,根据需要更新UI。围绕视图传递数据的一种常见模式是委托模式。
https://www.raywenderlich.com/477-design-patterns-on-ios-using-swift-part-1-2