도래울

swift image cash 본문

개발/iOS

swift image cash

도래울 2018. 2. 27. 14:25

let imageCache = NSCache<NSString, AnyObject>()


extension UIImageView {

    func loadImageUsingCache(withUrl urlString : String) {

        let url = URL(string: urlString)

        self.image = nil

        

        // check cached image

        if let cachedImage = imageCache.object(forKey: urlString as NSString) as? UIImage {

            self.image = cachedImage

            return

        }

        

        // if not, download image from url

        URLSession.shared.dataTask(with: url!, completionHandler: { (data, response, error) in

            if error != nil {

                print(error!)

                return

            }

            

            DispatchQueue.main.async {

                if let image = UIImage(data: data!) {

                    imageCache.setObject(image, forKey: urlString as NSString)

                    self.image = image

                }

            }

            

        }).resume()

    }

}


Comments