【发布时间】:2019-08-29 02:38:31
【问题描述】:
我正在尝试下载图像并将该图像存储在缓存中。从下一次尝试中,如果存在,则从缓存中提取该图像,否则下载该图像
我浏览过类似的帖子,但没有什么能帮助我解决问题。
请指教
let imageCache = NSCache<NSString, UIImage>()
func getImage(from url: URL, completion: @escaping ((UIImage?, Error?)->(Void))) {
if let cachedImage = imageCache.object(forKey: url.absoluteString as NSString) {
print("Image from cache")
completion(cachedImage, nil)
}
NetworkOperations().downloadImage(from: url) { (data, error) in
if let error = error {
completion(nil, error)
} else if let imgData = data, let image = UIImage(data: imgData) {
self.imageCache.setObject(image, forKey: url.absoluteString as NSString)
print("Image from cache")
completion(image, nil)
}
}
}
当我调用这个方法时,它总是通过下载图像来选择。我被击中了
【问题讨论】:
-
imageCache是否每次都被创建? -
我想是的。 setObject 行每次都执行
-
我在问
let imageCache = NSCache<NSString, UIImage>()行。