我正在使用 iOS 6.1 进行编码并使用 Core Data。
我有一个实体;称它为 NextID。
当我建立与核心数据的连接时,会在执行 addPersistentStoreWithType 步骤时创建 NextID.sqlite 文件。
此时,我有一个基本上是空的数据库。
然后我创建一个提取查询并针对实体运行它,然后我得到一个 fetchedResultsController 回来。
正如我所料,我计算了 fetchedResultsController 持有的对象并得到零。
然后我为 NextID 实体创建并初始化一个新对象。
作为测试,我再次使用 fetchedResultsController.count 计数并再次获得零,我认为这是正确的。
然后我保存我的上下文。
然后我用 fetchedResultsController.count 再次测试 - 并再次获得零。
现在我很困惑。
然后我阅读了有关 fetchedObjects 的以下内容:
“结果数组反映了控制器托管对象上下文中托管对象的内存状态,而不是它们在持久存储中的状态。但是,返回的数组不会随着托管对象的插入、修改或删除而更新。”
这对我来说似乎是一个矛盾的陈述。“结果数组反映了控制器的托管对象上下文中托管对象的内存状态”和“但是,返回的数组不会随着托管对象的插入、修改或删除而更新。” 在我看来,目的是不同的。
但无论如何,我在想,如果我想在执行 fetchedResultsController.count 时获得准确的计数,那么我需要先保存然后重新获取,然后再请求最新的计数。
我也在想,由于我在别处读到的内容,这不会是一件昂贵的事情,因为执行提取操作与实际加载所有提取到内存中的对象不同,因为这些物理加载到内存中在需要时发生。
我是否走在正确的轨道上并以合理的方式思考这些事情?