所以我正在提出网络请求。我将JSON解析为自定义对象。在这些对象中,有一些网址可以带回图像。其中一个URL返回一条错误消息(404),所以那里没有任何东西!如何在其位置设置默认图像并阻止我的应用程序崩溃?这是我的代码!感谢
parseInt
答案 0 :(得分:1)
你可以检查错误是否为零,然后设置聋人图像。
self.task = NSURLSession.sharedSession().dataTaskWithURL(url, completionHandler: { (data, response, error) -> Void in
if error != nil {
cell.collectionViewImage.image = UIImage(named:"default_image")
return
}
...
答案 1 :(得分:0)
试试这个:
let imageCache = NSCache<AnyObject, AnyObject>()
extension UIImageView {
func loadImageUsingCacheWithUrl(urlString: String) {
self.image = nil
// check for cache
if let cachedImage = imageCache.object(forKey: urlString as AnyObject) as? UIImage {
self.image = cachedImage
return
}
// download image from url
let url = URL(string: urlString)
URLSession.shared.dataTask(with: url!, completionHandler: { (data, response, error) -> Void in
var image:UIImage
if error == nil {
if(UIImage(data: data!) != nil){
image = UIImage(data: data!)!
} else {
image = UIImage(named: "DefaultImage")!
}
} else {
print(error ?? "load image error")
return
}
DispatchQueue.main.async(execute: { () -> Void in
imageCache.setObject(image, forKey: urlString as AnyObject)
self.image = image
})
}).resume()
}
}
关键点是404返回消息,数据任务错误仍然是= nil ,这次你必须检查UIImage(data: data!) != nil
以防止“致命错误:在解开时意外发现nil可选值“