【问题标题】:uncaught exception of type NSException with AlamoFireImage when url isn't an image当 url 不是图像时,使用 AlamoFireImage 未捕获的 NSException 类型异常
【发布时间】: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


    【解决方案1】:

    我找到了我的问题的解决方案,并不奇怪我没有得到答案,因为问题不在上面。我查看了之前的答案here 并设置了一个异常断点。

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

    然后异常断点停在

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

    在可可足中。当我保存字符串或 url 而不是领域中的 url 时,我猜测单元格开始下载,然后被无效并假设这就是导致崩溃的原因。

    【讨论】:

      猜你喜欢
      • 2015-11-17
      • 1970-01-01
      • 2016-03-25
      • 2017-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多