我在项目中使用AlamofireImage。我经常使用someImageView.af_setImageWithURL(url)
。
但是在某些时候我需要从imageCache手动获取图像,因为我不想将它应用到UIImageView。
这带来了两个问题:
let imageCache = AutoPurgingImageCache()
创建一个来直接访问图像缓存。这是与.af_setImageWithURL()
使用(Singleton)相同的缓存吗?或者这是一个新的?在我的情况下,这是毫无价值的,因为我无法从预先填充的缓存中获利。imageCache.imageForRequest(NSUrlRequest)
。如果NSUrlRequest确实使用相同的NSURL,那么我之前使用.af_setImageWithURL()
下载的图像是否匹配?答案 0 :(得分:4)
这与UIImageView
使用的缓存不同。如果您需要访问相同的缓存,可以UIImageView.af_sharedImageDownloader.imageCache
。
您需要使用完全相同的NSURLRequest
和相同的ImageFilter
。如果您使用相同的NSURLRequest
和相同的ImageFilter
,则图像将直接从缓存中提取(如果存在)。如果您使用的是其他ImageFilter
,则原始图片很可能会从NSURLCache
中提取,然后ImageFilter
会在其上运行,放入AutoPurgingImageCache
并返回。如果NSURLRequest
不同,则需要再次下载新图片。
答案 1 :(得分:1)
这是评论的答案:如何下载多个图像,将它们保存到缓存并从缓存中获取。
以下代码将从URL数组中下载图像并将其缓存在内存中。
let imageDownloader = ImageDownloader()
var URLRequests = [URLRequestConvertible]()
URLRequests.append(NSURLRequest(URL: NSURL(string: "https://some/image/some.png")!))
正如@cnoon所提到的,设置图像使用myUIImageView.af_setImageWithURL(imageUrl)
如果存在,这将从缓存加载图像。如果它不存在,则会发生网络呼叫