我的要求是“我有一个从亚马逊s3存储桶下载图片的应用程序。我需要缓存这些图片,我使用了普通的缓存。但我需要实现与SDWebImage相同的缓存技术”。SDWebImage中缓存方法的工作原理。
发布于 2018-12-19 15:46:36
创建一个缓存并将image设置为url字符串,并通过检查缓存中是否有该对象来从任何地方分配它
let imageCache = NSCache<AnyObject, AnyObject>()
imageCache.setObject(imageToCache!, forKey: urlString as AnyObject)
if let imageFromCache = imageCache.object(forKey: urlString as AnyObject) as? UIImage {
self.image = imageFromCache
return
}发布于 2018-12-19 16:55:54
非常方便的UIImageview图像缓存扩展。
import UIKit
let imageCache = NSCache<AnyObject, AnyObject()
extension UIImageView {
func cacheImage(urlString: String){
let url = URL(string: urlString)
image = nil
if let imageFromCache = imageCache.object(forKey: urlString as AnyObject) as? UIImage {
self.image = imageFromCache
return
}
URLSession.shared.dataTask(with: url!) {
data, response, error in
if let response = data {
DispatchQueue.main.async {
let imageToCache = UIImage(data: data!)
imageCache.setObject(imageToCache!, forKey: urlString as AnyObject)
self.image = imageToCache
}
}
}.resume()
}
}https://stackoverflow.com/questions/53846566
复制相似问题