Swift:图片缓存无法按预期工作

时间:2016-01-07 09:04:05

标签: swift caching

我正在尝试在swift中使用图像缓存,但没有按预期工作。我曾尝试过NSCache和AlamofireImage,但两者都不适合我。我没有得到任何代码错误,但当我尝试从缓存中获取图像时,它总是返回nil。

我猜图像没有保存在缓存中。有人可以在这里分享一些链接,例如如何在swift或ios中使用图像缓存吗?

2 个答案:

答案 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用作图像缓存库