首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSFetchedResultsController缓存

NSFetchedResultsController缓存
EN

Stack Overflow用户
提问于 2015-06-22 13:33:53
回答 2查看 158关注 0票数 1

我想知道缓存FetchedResultsController的重要性。假设我有一个包含50个要显示的项目的表视图,在任何给定的时间点,该表视图都可以显示大约10个结果。当我上下滚动表视图时,FetchedResultsController是否隐式获取并缓存结果?如果我没有缓存或指定缓存,FetchedResultsController会不会不必要地再次执行fetch操作。简而言之,我想知道FetchedResultsController的缓存特性。

EN

回答 2

Stack Overflow用户

发布于 2018-09-11 08:31:44

缓存的主要原因是应用程序重新启动的速度更快,因为它不需要重新获取上次运行应用程序时已经做过的记录。相反,结果被存储在一个已经存在于表结构中的文件中,因此可以立即加载,而不是加载所有行、分组等所需的多个查询。此外,非常酷的是,如果另一个进程或扩展已经编辑了数据库,那么当应用程序首次出现时,它将匹配默认图像(应用程序上次关闭时的屏幕截图),并将在应用程序未运行时对表进行动画更改。这对于用户理解上下文非常有用。

您也可以使用它,如果您进入视图控制器,然后返回,然后再次进入,它可以更快地显示表。

票数 1
EN

Stack Overflow用户

发布于 2015-06-22 14:39:41

指定缓存名称时会发生以下情况:

  • 如果控制器找不到合适的缓存,它会计算所需的节以及节中对象的顺序。然后将此信息写入磁盘。
  • 如果发现具有相同名称的缓存,控制器将测试缓存以确定其内容是否仍然有效。控制器将当前实体名称、实体版本散列、排序描述符和节键路径与缓存中存储的内容以及缓存信息文件和持久存储文件的修改日期进行比较。
  • 如果缓存与当前信息一致,控制器将重用先前计算的information.
  • If如果缓存与当前信息不一致,则重新计算所需信息,并更新缓存。

只要区段和排序信息发生更改,缓存就会更新。

特别是使用缓存来存储与段和索引路径相关的信息,这使得数据的加载速度更快。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30972678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档