如何检测何时需要保存 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?的主要内容,如果未能解决你的问题,请参考以下文章

如何检测表视图中的项目何时更改?

如何检测 SD 卡何时插入?

Qt WebEngine 密码管理器 - 如何检测网站上何时使用用户名/密码

如何检测用户何时离开网站?

如何检测用户何时单击 lyft 按钮 swift

如何检测 UINavigationController 动画何时完成?