Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 疼痛和坚持?_Ios_Swift_Caching_Persistence_Nscache - Fatal编程技术网

Ios 疼痛和坚持?

Ios 疼痛和坚持?,ios,swift,caching,persistence,nscache,Ios,Swift,Caching,Persistence,Nscache,我的应用程序对某些项目进行搜索,并根据得到的每个结果下载一幅图像。它在tableView上显示结果,每个结果显示一个单元格,每个单元格显示相应的图像 如果已经使用相同的参数进行了搜索,我希望缓存图像以避免下载相同的图像。例如,我一直在阅读有关NSCache的文章,认为这是一个很好的选择,但我也读到NSCache在应用程序启动之间不会持久化。我在苹果的文档中找不到这些信息,有人能帮我找到吗 如果我想保留下载的图像,即使是在应用程序启动之间,但我无法使用NSCache,那么我应该如何管理它?缓存是一

我的应用程序对某些项目进行搜索,并根据得到的每个结果下载一幅图像。它在tableView上显示结果,每个结果显示一个单元格,每个单元格显示相应的图像

如果已经使用相同的参数进行了搜索,我希望缓存图像以避免下载相同的图像。例如,我一直在阅读有关
NSCache
的文章,认为这是一个很好的选择,但我也读到
NSCache
在应用程序启动之间不会持久化。我在苹果的文档中找不到这些信息,有人能帮我找到吗


如果我想保留下载的图像,即使是在应用程序启动之间,但我无法使用
NSCache
,那么我应该如何管理它?

缓存是一项依赖于应用程序的任务。例如,正如您所说,NPD不能使用NPCache,因为它不会永久存储。您可以尝试调整HTTP服务器(!),以便应用程序的URL加载系统将尽可能长时间地缓存下载的图像。但是要实现缓存完全满足您的需求是非常困难的。第三种选择是使用一个免费的框架为您提供缓存。尽管我认为它们有一些缺陷,但你应该看看它们。第四种选择是,编写自己的缓存,它完全满足您的需要。这并不像听起来那么复杂。正如@rmaddy所建议的,它本质上是在将图像读写到缓存文件夹中。

我也遇到了同样的问题。我创建了一个轻量级库。它将数据存储在NSCache中,并与缓存文件夹同步。因此,您的数据在应用程序启动之间可用

用法:
class-MyClass{
私有let缓存:SmartCache=.init()
func下载图像(从url:url){
如果let data=self.cache[url],则let image=NSImage(数据:数据){
//这是你的照片`
}否则{
//下载您的图像并将其保存到我们的缓存中
缓存[url]=image.tiffresentation
}
}
}

https://github.com/nightwill/smart-cache.git

将图像写入沙盒的缓存文件夹。