如何在发出网络请求时设置默认图像并且没有图像?

时间:2016-04-18 05:30:54

标签: ios json xcode swift networking

所以我正在提出网络请求。我将JSON解析为自定义对象。在这些对象中,有一些网址可以带回图像。其中一个URL返回一条错误消息(404),所以那里没有任何东西!如何在其位置设置默认图像并阻止我的应用程序崩溃?这是我的代码!感谢

parseInt

2 个答案:

答案 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可选值“