核心数据获取并获得准确的对象计数
Posted
技术标签:
【中文标题】核心数据获取并获得准确的对象计数【英文标题】:Core data fetching and getting an accurate object count 【发布时间】:2013-09-08 14:16:45 【问题描述】:我正在使用 ios 6.1 进行编码并使用 Core Data。
我有一个实体;称它为 NextID。
当我建立与 Core 数据的连接时,执行 addPersistentStoreWithType 步骤时会创建 NextID.sqlite 文件。
此时,我的数据库基本上是空的。
然后我创建一个获取查询并针对实体运行它,然后我得到一个 fetchedResultsController。
我计算了 fetchedResultsController 持有的对象并得到一个零,正如我所期望的那样。
然后我为 NextID 实体创建并初始化一个新对象。
作为测试,我再次使用 fetchedResultsController.count 计数并再次获得零,我认为这是正确的。
然后我保存我的上下文。
然后我再次使用 fetchedResultsController.count 进行测试 - 再次获得零。
现在我很困惑。
然后我阅读了有关 fetchedObjects 的以下内容:
“结果数组反映了控制器的托管对象上下文中托管对象的内存状态,而不是它们在持久存储中的状态。但是,返回的数组不会随着托管对象的插入、修改或删除而更新。”
这对我来说似乎是一个矛盾的陈述。 “结果数组反映了控制器的托管对象上下文中托管对象的内存状态”和“但是,返回的数组不会随着托管对象的插入、修改或删除而更新。”在我看来,目的是不同的。
但无论如何,我在想,如果我想在执行 fetchedResultsController.count 时获得准确的计数,那么我需要先保存然后重新获取,然后再请求最新的计数。
由于我在其他地方读到的内容,我也在想,这不会是一件昂贵的事情,因为执行提取操作与实际加载所有提取到内存中的对象不同,因为这些物理负载仅在需要时才会进入内存。
我是否走在正确的轨道上并以合理的方式思考这些事情?
【问题讨论】:
core data: [NSFetchedResultsController -fetchedObjects], will this method reflect object change?的可能重复 【参考方案1】:打算用木桩穿过这个人的心脏。我想我的问题得到了回答here。谢谢大家。
【讨论】:
【参考方案2】:如果您不熟悉核心数据,请使用神奇的记录。它易于集成: 这里有教程:http://ablfx.com/blog/article/2
http://yannickloriot.com/2012/03/magicalrecord-how-to-make-programming-with-core-data-pleasant/#sthash.GNErDSr8.8VBBav02.dpbs
【讨论】:
MagicalRecord 使用相同的 NSFetchedResultsController 作为“普通”核心数据应用程序,因此这不能回答问题。【参考方案3】:编辑: 加里蒙所说的。期间。
Gallymon 所说的,以及: NSFetchedResultsController 具有通知您新/更新/删除项目/部分的委托方法。这些可能会帮助您或使您更加困惑(我的目标是第一个:))。
【讨论】:
在 Gallymon 给出的链接中提到了 FRC 委托方法 :-)以上是关于核心数据获取并获得准确的对象计数的主要内容,如果未能解决你的问题,请参考以下文章