杀死应用程序后保存NSFetchedResultsController缓存

时间:2012-03-05 14:27:23

标签: objective-c ios core-data

我正在处理核心数据项目,该项目处理超过150000条记录。使用NSFetchedResultsController在表视图中显示记录。记录将使用我的实体的不同属性进行排序。

为了让应用感觉快,我创建了多个具有不同排序描述符的NSFetchedResultsController,以显示相应的排序结果。我在我的应用程序启动时初始化FRC并让用户等待直到FRC初始化。之后,当用户更改排序键时,我只需将当前FRC替换为新排序键的FRC,因此排序感觉即时。

应用程序在RAM中运行正常。但是在杀死并重新启动时需要大约15-20秒(iPad 1)进行初始化。

当应用程序退出并在应用重新启动时恢复时,是否有办法将FRC的缓存数据保存到磁盘?或者有更好的解决方法吗?

1 个答案:

答案 0 :(得分:1)

嗯......如果指定一个缓存名称,NSFetchedResultController应该已经保存到磁盘,所以我认为很大程度上取决于你如何初始化控制器。

无论如何,所有获取的控制器缓存都保存到

“AppSandbox” /Library/Caches/.CoreDataCaches/SectionInfoCaches /

我不认为在关闭应用后它们会被删除。 尝试使用它,您可以使用以下方法轻松访问Library文件夹:

[NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) objectAtIndex:0];

但是我读到当控制器找到一个与初始化的缓存同名的缓存时,它会检查它是否仍然符合,然后更新它,可能需要花费大量数据来更新缓存信息。 考虑使用NSOperation来加载获取的控制器并加快速度。 也许从最常显示的默认值开始。