【发布时间】:2018-09-23 22:08:06
【问题描述】:
我有一个 UITableView,我在其中从 API 获取图像 URL 并将其转换为 sn 图像。以下是代码:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let url = URL(string: imageURL)
var image: UIImage?
if let data = try? Data(contentsOf: url!){
image = UIImage(data: data)! // Crashing here. it's nil
}
}
以下是错误描述。我不知道为什么会这样,也无法弄清楚。我已经调试过,我可以看到 url 存在并且它确实获取了图像 url。那么它为什么会崩溃呢?这是随机崩溃并且经常发生。我想我在更新到 Xcode 10 后开始看到这个错误。不确定这是否与 Xcode 有关或只是巧合,因为我在以前版本的 Xcode 中从未见过这个错误。
有什么帮助吗?
打印数据说明:
表达式产生错误:错误:/var/folders/57/03c16yxx1v5_bs9xtqxchnhm0000gn/T/expr22-7a390e..swift:1:65:错误:使用未声明的类型'Foundation' Swift._DebuggerSupport.stringForPrintObject(Swift.UnsafePointer
(bitPattern: 0x124588550)!.pointee)
【问题讨论】:
-
暂时忽略 Foundation 错误,您的代码存在很多问题。
!的错误用法太多了(这是导致崩溃的原因)。您正在主队列上从 Internet 下载数据 - 这非常糟糕。永远不要使用Data(contentsOf:)。使用URLSession。 -
Tx 麦迪。没有意识到我做错了,崩溃很明显。我终于设法用 URLSession 弄明白了。
标签: ios swift uitableview uiimage xcode10