gpt4 book ai didi

ios - swift 3 : not working with completion handler in iOS

转载 作者:行者123 更新时间:2023-11-28 16:06:50 25 4
gpt4 key购买 nike

我已经使用 NSObject 类中的完成处理程序创建了一个函数来使用 Web 服务。但是,我无法通过处理程序返回来调用该函数。

func getUser(url:String, completionHandler: @escaping (NSDictionary?, NSError?) -> ()) {

let config = URLSessionConfiguration.default // Session Configuration
let session = URLSession(configuration: config) // Load configuration into Session
let url = URL(string: url)!

let task = session.dataTask(with: url, completionHandler: {
(data, response, error) in

if error != nil {
completionHandler(nil, error as NSError?)
} else {
do {
if let json = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? [NSDictionary: Any] {
completionHandler(json as NSDictionary?,nil)
}
} catch {
print("error in JSONSerialization")
}
}
})
task.resume()
}

最佳答案

你应该确保你的 completionHandler 在每种情况下都被调用:例如,当 JSONSerialization 抛出时,你捕获并打印错误,但你没有调用您的 completionHandler。如果 JSON 结果为 nil

则相同

添加

你可以这样处理:

do {
let json = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? [NSDictionary: Any]
completionHandler(json,nil)
} catch(let error) {
print(error)
completionHandler(nil, error)
}

关于ios - swift 3 : not working with completion handler in iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40170440/

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