Alamofire图片:在af_setImageWithURL()之后从AutoPurgingImageCache获取图片

时间:2015-10-24 13:49:01

标签: ios image swift caching alamofire

我在项目中使用AlamofireImage。我经常使用someImageView.af_setImageWithURL(url)

但是在某些时候我需要从imageCache手动获取图像,因为我不想将它应用到UIImageView。

这带来了两个问题:

  1. 我可以通过使用let imageCache = AutoPurgingImageCache()创建一个来直接访问图像缓存。这是.af_setImageWithURL()使用(Singleton)相同的缓存吗?或者这是一个新的?在我的情况下,这是毫无价值的,因为我无法从预先填充的缓存中获利。
  2. 鉴于这是相同的缓存:我如何获取正确的图像?我想到了imageCache.imageForRequest(NSUrlRequest)。如果NSUrlRequest确实使用相同的NSURL,那么我之前使用.af_setImageWithURL()下载的图像是否匹配?

2 个答案:

答案 0 :(得分:4)

问题1

这与UIImageView使用的缓存不同。如果您需要访问相同的缓存,可以UIImageView.af_sharedImageDownloader.imageCache

执行此操作

问题2

您需要使用完全相同的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)
如果存在,这将从缓存加载图像。如果它不存在,则会发生网络呼叫