gpt4 book ai didi

swift - do - try - catch 代码不尝试或捕获。只是做

转载 作者:行者123 更新时间:2023-11-28 10:44:43 24 4
gpt4 key购买 nike

感谢您预先提供的任何帮助。

url session 与连接完美结合,它将错误打印为 nil。但如果没有它,它会很好地打印 .localizedDescription 并向我显示正确的错误,但随后继续执行 do{try} 并在 try 行中出现此错误而崩溃:

Thread 6: Fatal error: Unexpectedly found nil while unwrapping an Optional value

现在我什至不确定这是否与错误处理有关。感谢您在了解正在发生的事情或解决问题方面提供的任何帮助!

func getData(completion: (() -> ())?) {

let urlString = URL(string: "https://api.coinmarketcap.com/v1/ticker/")

URLSession.shared.dataTask(with: urlString!, completionHandler: { (data, response , error) in

print("before entering do-try-catch", error?.localizedDescription)

do {

//create Dictionary
print("downloading content")

self.coinData = try JSONSerialization.jsonObject(with: data!) as! [[String:Any]]

//set connection status
self.connection = true

//update tableView
DispatchQueue.main.async {
completion?()
}

} catch {

print("catch", error.localizedDescription)

//set connection status
self.connection = false

//update tableView
DispatchQueue.main.async {
completion?()
}
}
}).resume()
}

最佳答案

Thread 6: Fatal error: Unexpectedly found nil while unwrapping an Optional value 是初学者的常见问题。

您尝试使用不存在的数据。因此,例如在您的代码中,您强制执行 try JSONSerialization.jsonObject(with: data!)

datanil 时,代码将崩溃。

开头一样URLSession.shared.dataTask(with: urlString!, completionHandler: { (data, response, error) {}

urlString 不是有效的 URL 时,代码将崩溃。 (在这种情况下,url 似乎是有效的)。

更多信息请看这里: https://stackoverflow.com/a/24034551/4420355

尝试下面的片段它应该可以工作

if let data = data {
self.coinData = try JSONSerialization.jsonObject(with: data) as? [[String:Any]]
//... work with coinData
}

关于swift - do - try - catch 代码不尝试或捕获。只是做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48947044/

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