网址不是图片时,带有AlamoFireImage的NSException类型的未捕获异常

时间:2018-10-22 12:27:22

标签: swift nsexception alamofireimage

我正在使用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,但这样做是在与人类打交道,并且可能会发生错误。因此,是否有一个原因会导致我的应用程序崩溃而导致另一个对象崩溃?如何防止某些无效网址崩溃?

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法,并不感到惊讶,因为问题不在上面,所以我没有答案。我查看了先前的答案here,并设置了异常断点。

我的应用程序还使用了Realm(起初似乎并不相关)。我正在用Realm的数据填充UITableViewCell。然后,我下载了JSON并创建了新对象,并删除了旧的领域对象。

异常断点然后在

处停止
 @throw RLMException(@"Object has been deleted or invalidated.") 

在cocoapod中。当我保存一个字符串或URL而不是域中的URL时,我猜该单元格开始下载,然后被无效,并假设那是导致崩溃的原因。