Narendra Ojha
Narendra Ojha

Reputation: 683

Swift: image cache not working as expected

I am trying to use image cache in swift but nothing works as expected. I have tried NSCache and AlamofireImage but both didn't work for me. I did not get any error with code but when I tried to fetch image from cache it always returns nil.

I guess the image is not saved in cache. Can someone here share some links with example on how to use image caching in swift or ios?

Upvotes: 1

Views: 1483

Answers (2)

huynguyen
huynguyen

Reputation: 7770

You can use this as a disk and memory cache, if you implemented downloading image mechanism. You can specify cache size, expire time

https://github.com/huynguyencong/DataCache

Or you can use Kingfisher as a image caching library

Upvotes: 1

Ankita Shah
Ankita Shah

Reputation: 2248

What you can do is download images in background thread. When image is downloaded save it an Object and update you'r main thread too. For displaying image next time you can directly load image from the cache.

Below I'm sharing my code

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()
}

Hope so this may help you

Upvotes: 2

Related Questions