-1

我正在使用 iOS 6.1 进行编码并使用 Core Data。

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

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

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

然后我创建一个提取查询并针对实体运行它,然后我得到一个 fetchedResultsController 回来。

正如我所料,我计算了 fetchedResultsController 持有的对象并得到零。

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

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

然后我保存我的上下文。

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

现在我很困惑。

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

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

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

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

我也在想,由于我在别处读到的内容,这不会是一件昂贵的事情,因为执行提取操作与实际加载所有提取到内存中的对象不同,因为这些物理加载到内存中在需要时发生。

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

4

3 回答 3

0

打算用木桩穿过这个人的心脏。我想我的问题在这里得到了回答。谢谢大家。

于 2013-09-08T14:23:11.243 回答
0

如果您不熟悉核心数据,请使用神奇的记录。它易于集成:这里有教程:http ://ablfx.com/blog/article/2

http://yannickloriot.com/2012/03/magicalrecord-how-to-make-programming-with-core-data-pleasant/#sthash.GNERDSr8.8VBBav02.dpbs

于 2013-09-08T14:27:23.007 回答
0

编辑:加里蒙说的。时期。

Gallymon 所说的,以及: NSFetchedResultsController 具有通知您新/更新/删除项目/部分的委托方法。这些可能会帮助您或使您更加困惑(我的目标是第一个:))。

于 2013-09-08T14:37:59.180 回答