如何检测何时需要保存 NSPersistentStore?
Posted
技术标签:
【中文标题】如何检测何时需要保存 NSPersistentStore?【英文标题】:How can I detect when a NSPersistentStore needs to be saved? 【发布时间】:2011-10-03 22:29:11 【问题描述】:我有一个 ios 应用程序,我在其中使用 coreData 来存储我的“文档”。它们都共享一个共同的 NSManagedObjectContext,我经常保存上下文。
我想跟踪各种“文档”(其中每个文档都是单独的 NSPersistentStore)的最后修改日期,并将日期存储在每个商店拥有的特定唯一“根”对象中。
我可以尝试在修改文档时使修改时间戳保持最新,但如果我能在保存上下文时找出需要保存哪些持久性存储,它会更清晰、更健壮。
我找不到任何方法来检测持久性存储是否需要保存。我可以查询 NSManagedObjectContext 以查看需要保存哪些托管对象,尽管我找不到查看对象属于哪个存储的简单方法。
看起来这并不是一件奇怪的事情,核心数据包含我正在寻找的所有信息,但我很难找到一种简单的方法来访问这些数据。
有没有人知道一个简单的方法?
如果我找不到更简单的方法,我将简单地从上下文中循环删除/修改/插入的对象,并为每个实体类型编写特殊代码来确定对象所属的商店。
提前感谢您的帮助!
罗恩
【问题讨论】:
【参考方案1】:[[managedObject objectID] persistentStore]
是您要查找的持久存储(如果对象尚未保存,则可能为 nil)。
文档表明,如果您已将其分配给商店但尚未保存,则为 nil;我不确定这是真的(而且我看不到其他任何地方可以保存此信息)。如果您可以访问它,我会检查它在 3.x、4.x 和 5.0 beta 上的行为。
【讨论】:
以上是关于如何检测何时需要保存 NSPersistentStore?的主要内容,如果未能解决你的问题,请参考以下文章