核心数据获取和获取准确的对象计数

时间:2013-09-08 14:16:46

标签: ios core-data

我在iOS 6.1中编码并使用Core Data。

我有一个实体;称之为NextID。

当我建立与Core数据的连接时,在执行addPersistentStoreWithType步骤时会创建NextID.sqlite文件。

此时,我的数据库基本上是空的。

然后我创建一个fetch查询并针对Entity运行它,然后我得到一个fetchedResultsController。

我计算了fetchedResultsController持有的对象并得到零,正如我所期望的那样。

然后我为NextID实体创建并初始化一个新对象。

作为测试,我再次使用fetchedResultsController.count计算并再次获得零,我认为是正确的。

然后我保存了我的背景。

然后我再次使用fetchedResultsController.count测试 - 并再次获得零。

现在我很困惑。

然后我读了关于fetchedObjects的以下内容:

“结果数组反映了控制器的托管对象上下文中托管对象的内存状态,而不是持久性存储中的状态。但是,返回的数组不会随着托管对象的插入,修改或删除而更新。“

这对我来说似乎是一个矛盾的陈述。 “结果数组反映了控制器的托管对象上下文中托管对象的内存状态”和“但是,返回的数组不会随着托管对象的插入,修改或删除而更新。”在我看来是在交叉目的。

但无论如何,我想如果我想在获取fetchedResultsController.count时获得准确的计数,那么我需要先保存然后重新获取,然后再询问最新的计数。 / p>

我也在考虑,因为我在其他地方读过的内容,这不是一件昂贵的事情,因为执行获取操作与实际加载所有提取到内存中的对象不同,因为这些物理负载进入记忆只会在需要时发生。

我是否走在正确的轨道上并以合理的方式思考这些事情?

3 个答案:

答案 0 :(得分:0)

要通过这个人的心脏驾驶木桩。我想我的问题已经回答here了。谢谢,全部。

答案 1 :(得分:0)

答案 2 :(得分:0)

编辑: Gallymon说的话。周期。

Gallymon说了什么,并且:NSFetchedResultsController有委托方法通知您新的/更新/删除的项目/部分。那些可能会帮助你或更多地混​​淆你(我的目标是第一个:))。