Created
January 23, 2020 01:55
-
-
Save LucasMW/2ce2287c86919fe22db34728b9bb5d33 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// ImageCache.swift | |
// MWN - Minimal World News | |
// | |
// Created by Lucas Menezes on 1/22/20. | |
// Copyright © 2020 Lucas Menezes. All rights reserved. | |
// | |
import UIKit | |
class ImageCache { | |
private var dict : [String : UIImage] = [:] | |
var defaultImage = UIImage() | |
private func getData(from url: URL, completion: @escaping (Data?, URLResponse?, Error?) -> ()) { | |
URLSession.shared.dataTask(with: url, completionHandler: completion).resume() | |
} | |
func getImage(for urlString: String, completion: @escaping (UIImage) -> () ) { | |
guard let image = dict[urlString] else { | |
downloadImage(from: urlString) { (image) in | |
completion(image) | |
} | |
return | |
} | |
completion(image) | |
} | |
private func downloadImage(from str: String, completion: @escaping (UIImage) -> ()) { | |
guard let url = URL(string: str) else { return } | |
getData(from: url) { data, response, error in | |
guard let data = data, error == nil else { return } | |
self.dict[str] = UIImage(data: data) | |
completion(self.dict[str] ?? self.defaultImage) | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment