gpt4 book ai didi

objective-c - 终止应用程序后保存 NSFetchResultsController 缓存

转载 作者:行者123 更新时间:2023-11-29 04:46:30 25 4
gpt4 key购买 nike

我正在开发一个处理超过 150000 条记录的核心数据项目。使用 NSFetchedResultsController 将记录显示在 TableView 中。这些记录将使用我的实体的不同属性进行排序。

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

应用程序在 RAM 中时可以正常工作。但当终止并重新启动时,大约需要 15-20 秒(iPad 1)才能初始化。

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

最佳答案

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

无论如何,所有获取的 Controller 缓存都保存到

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

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

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

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

关于objective-c - 终止应用程序后保存 NSFetchResultsController 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9568298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com