Я внедряю кэширование изображений в ios.
Следующее - моя функция.
struct DownloadImage {
static let cache = NSCache<NSString,UIImage>()
static func downloadImage(with url: URL,completion: @escaping (_ image: UIImage?) -> ()) {
let dataTask = URLSession.shared.dataTask(with: url) { (data, responseURL, error) in
var downloadedImage: UIImage?
if let data = data {
downloadedImage = UIImage(data: data)
}
if downloadedImage != nil {
cache.setObject(downloadedImage!, forKey: url.absoluteString as NSString)
}
DispatchQueue.main.async {
completion(downloadedImage)
}
}
dataTask.resume()
}
static func getImage(withURL url:URL,completion: @escaping (_ image: UIImage?) -> ()) {
if let image = cache.object(forKey: url.absoluteString as NSString) {
completion(image)
} else {
downloadImage(with: url, completion: completion)
}
}
}
Изображение кэшируется, но когда я перестраиваю проект снова, функция загрузки изображения вызывается даже для того же URL-адреса.
Может кто-нибудь сказать мне, что мне не хватает или почему вызывается функция загрузки изображения?