如果我用fetchRequest初始化我的NSFetchedResultController,其fetchLimit为20,如果我的用户滚过前20个结果,是否需要再调用performFetch?或者会自动为我调用performFetch吗?
答案 0 :(得分:0)
如果您使用的是fetchLimit
,则不会更新,但如果您想要前20个结果,并且自动更新更多,则可以setBatchSize
使用20
。
详见下文:
fetchedObjects数组的计数可能不是您想要执行的操作,因为它不会更新持久性存储中的更改。来自NSFetchedResultsController文档:
结果数组仅包含由提取请求(fetchRequest)指定的实体的实例,并且与其谓词匹配。 (如果获取请求没有谓词,则结果数组包含获取请求指定的实体的所有实例。)
结果数组反映了控制器的托管对象上下文中托管对象的内存中状态,而不是持久性存储中的状态。但是,返回的数组不会在插入,修改或删除托管对象时更新。
如果您只想获取20个对象,请设置NSFetchRequest的获取限制。如果只想在内存中保留20个对象,请使用NSFetchRequest对象的setBatchSize。