我正在尝试在swift中使用图像缓存,但没有按预期工作。我曾尝试过NSCache和AlamofireImage,但两者都不适合我。我没有得到任何代码错误,但当我尝试从缓存中获取图像时,它总是返回nil。
我猜图像没有保存在缓存中。有人可以在这里分享一些链接,例如如何在swift或ios中使用图像缓存吗?
答案 0 :(得分:2)
您可以做的是在后台线程中下载图像。下载图像时,将其保存为对象并更新主线程。下次显示图像时,可以直接从缓存中加载图像。
我在下面分享我的代码
var imageCache = NSMutableDictionary()
if let img = imageCache.valueForKey("key") as? UIImage{
imageView.image = img
}
else{
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithURL(NSURL(string: imgURL!)!, completionHandler: { (data, response, error) -> Void in
if(error == nil){
let img = UIImage(data: data!)
imageCache.setValue(img, forKey: "key") // Image saved for cache
dispatch_async(dispatch_get_main_queue(), { () -> Void in
//Update your image view
})
}
})
task.resume()
}
希望这可以帮助你
答案 1 :(得分:1)
如果您实现了下载映像机制,则可以将其用作磁盘和内存缓存。您可以指定缓存大小,到期时间
https://github.com/huynguyencong/DataCache
或者您可以将Kingfisher用作图像缓存库