我想知道缓存FetchedResultsController
的重要性。假设我有一个包含50个项目的表格视图,在任何给定的时间点,表格视图可以显示大约10个结果。当我向上和向下滚动表视图时,FetchedResultsController
是否隐式提取并缓存结果?如果我没有缓存或指定缓存,FetchedResultsController
会不必要地再次进行提取。简而言之,我想知道FetchedResultsController
的缓存功能。
答案 0 :(得分:1)
缓存的主要原因是应用程序重新启动的速度更快,因为它不需要重新获取上次运行该应用程序时已经执行的记录。结果而是存储在表结构中已经存在的文件中,因此与加载所有行,将它们分组等所需的多个查询相比,它们可以立即加载。同样很酷的是,如果另一个进程或扩展编辑了数据库,然后当应用首次出现时,它将与默认图像(应用最后关闭时拍摄的屏幕截图)相匹配,并且将对应用未运行时发生的表的变化进行动画处理。这对于用户理解上下文非常有用。
如果您进入视图控制器,然后再返回,然后再次进入,您也可以使用它,这样可以更快地显示表格。
答案 1 :(得分:0)
指定缓存名称时会发生以下情况:
每当更改部分和订购信息时,都会更新缓存。
特别是缓存用于存储与section和indexpath相关的信息,这些信息可以快速加载数据。