嗨我想缓存来自json的图像。我已经制作了一个下载并解析json的networkService,我使用func downloadImage()来生成imageurl的http请求。然后我用这个func更新我的剧集但是图片仍然在滚动下载
var episode: Product! {
didSet {
self.updateUI()
}
}
let imageCache = NSCache<AnyObject, AnyObject>()
func updateUI()
{
menuItemNameLabel?.text = episode.title
ingredientsItemLabel?.text = episode.summary
priceItemLabel?.text = episode.price
menuItemImageView?.image = UIImage(named: "Koulourades")
if let thumbnailURL = episode.thumbnailURL {
let networkService = NetworkService(url: thumbnailURL)
networkService.downloadImage({ (imageData) in
if let imageFromCache = self.imageCache.object(forKey: self.episode.thumbnailURL as AnyObject) as? UIImage {
DispatchQueue.main.async(execute: {
self.menuItemImageView?.image = imageFromCache
return
})
}
DispatchQueue.main.async(execute: {
let imageToCache = UIImage(data: imageData as Data)
self.imageCache.setObject(imageToCache!, forKey: self.episode.thumbnailURL as AnyObject)
self.menuItemImageView?.image = imageToCache
})
})
}
}//--end updateUI()
答案 0 :(得分:0)
您需要解决问题的方式称为延迟加载,应用程序将立即下载图像并将其缓存到内存中。
有多个第三方库可用于缓存图像。
图书馆,
1)HanekeSwift - &gt; https://github.com/Haneke/HanekeSwift
2)翠鸟 - &gt; https://github.com/onevcat/Kingfisher
3)SDWebImage - &gt; https://github.com/rs/SDWebImage
4)AlamofireImage - &gt; https://github.com/Alamofire/AlamofireImage