【发布时间】:2018-10-22 12:27:21
【问题描述】:
我正在使用 AlamofireImage 在 UITableViewCell 中显示图像
typealias boolAndAnyCompletion = (_ success: Bool, _ value: Any?) -> Void
class ImageHelper {
func fetchImage(url:String, completion: @escaping boolAndAnyCompletion) {
Alamofire.request(url).responseImage { response in
if let image = response.result.value {
completion(true, image)
} else {
completion(false, "No image")
}
}
}
}
这大部分工作正常。我正在从 JSON 对象中获取一个 url,并尝试在该 url 处获取图像。大多数情况下,这可以正常工作,并且如果 url 字符串为 404 或其他无效,则按预期返回图像或失败。
但是今天我开始让我的应用程序崩溃了
libc++abi.dylib:以 NSException 类型的未捕获异常终止
我将其缩小到上述方法,其中我的 JSON 响应给我一个错误的 url,它没有指向图像。
如果我获得的图片网址是“https://bbc.co.uk/news/”,则会导致崩溃。但是,如果我在“https://www.google.co.uk/maps/”处搜索图像,该图像会按预期失败,但不会崩溃并通过错误处理进行处理。
我知道最好的解决方案是仅将正确的图像 URL 放入 JSON 中,但如果是人工处理,则可能会发生错误。那么,是否有一个原因会“正确失败”而另一个导致我的应用程序崩溃?如何防止某些无效 url 崩溃?
【问题讨论】:
标签: swift nsexception alamofireimage