我需要在磁盘上缓存图像,但将它们限制为 20 个图像。我正在尝试Nuke
图书馆。当我跑
Nuke.loadImage(with: url, options: options, into: imageView)
只要我在我的视图控制器中,图像就会被缓存。当我离开视图时,下一次将再次获取图像。那么我如何制作Nuke
(或其他库)将这些图像保存为特定的图像计数或时间。
在尝试之前Nuke
,我只是在每次获取图像时将图像保存到应用程序的 Documents 文件夹中。我确信有更好的方法。
更新:我能够做到这一点Kingfisher
。
func getFromCache(id: String) {
ImageCache.default.retrieveImage(forKey: id, options: nil) {
image, cacheType in
if let image = image {
self.galleryImageView.image = image
} else {
print("Not exist in cache.")
self.loadImage()
}
}
}
private func loadImage() {
ImageDownloader.default.downloadImage(with: url, options: [], progressBlock: nil) {
(image, error, url, data) in
if let image = image {
self.galleryImageView.image = image
ImageCache.default.store(image, forKey: id, toDisk: true)
}
}
}
如果我理解正确,首先retrieveImage
从磁盘缓存中获取图像。后来从内存缓存。只有在收到内存警告时才会释放它们。我希望确实如此。上帝帮助我们。