我正在使用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字符串为404或其他原因无效,则失败。
但是今天我开始让我的应用程序崩溃
libc ++ abi.dylib:以类型为NSException的未捕获异常终止
我将范围缩小到上述方法,其中我的JSON响应给了我一个错误的URL,该URL不指向图像。
如果我获取的图像的网址是“ https://bbc.co.uk/news/”,这会导致崩溃。但是,如果我在“ https://www.google.co.uk/maps/”处搜索图像,该图像按预期失败而没有崩溃,并通过错误处理进行了处理。
我知道最好的解决方案是只将正确的图像URL放入JSON,但这样做是在与人类打交道,并且可能会发生错误。因此,是否有一个原因会导致我的应用程序崩溃而导致另一个对象崩溃?如何防止某些无效网址崩溃?
答案 0 :(得分:0)
我找到了解决问题的方法,并不感到惊讶,因为问题不在上面,所以我没有答案。我查看了先前的答案here,并设置了异常断点。
我的应用程序还使用了Realm(起初似乎并不相关)。我正在用Realm的数据填充UITableViewCell。然后,我下载了JSON并创建了新对象,并删除了旧的领域对象。
异常断点然后在
处停止 @throw RLMException(@"Object has been deleted or invalidated.")
在cocoapod中。当我保存一个字符串或URL而不是域中的URL时,我猜该单元格开始下载,然后被无效,并假设那是导致崩溃的原因。