将观察者保存在 CoreData 对象上的干净方法?

Posted

技术标签:

【中文标题】将观察者保存在 CoreData 对象上的干净方法?【英文标题】:Clean way to save observers on CoreData objects? 【发布时间】:2011-09-23 12:06:41 【问题描述】:

我想知道是否可以保存和恢复 CoreData 实体的 keyPaths 的观察者。

示例:我的 managedObjectContext 中有 300 名员工。当我第一次插入它们时,我为所有它们调用 addObserver: ..,以便在 someValue 更改时通知某些对象。

现在我调用 saveAction: 来保存。我关闭应用程序。重启后,有什么好办法恢复300 x addObserver?

谢谢。 问候。

编辑:Aka,在取消归档 CoreData 实体时添加观察者的最佳方式是什么?模型类中的自定义 init()?只是在 for 循环中获取 Employee 的所有实体,然后在它们上调用 addObserver?

【问题讨论】:

【参考方案1】:

似乎最好的方法是为您的 Employee 实体创建子类 NSManagedObject 并覆盖 awakeFromFetch 和 awakeFromInsert 方法。 awakeFromInsert 在您第一次插入实体时被调用,因此您可以移动现有代码以将观察者添加到那里。 awakeFromFetch 是您在获取时添加观察者的地方。

【讨论】:

谢谢,不知道这些方法!他们听起来应该完全按照我的意愿去做! :)

以上是关于将观察者保存在 CoreData 对象上的干净方法?的主要内容,如果未能解决你的问题,请参考以下文章

消失的 NSManagedObject

如何使用 NSManagedObject 将 NSDictionary 保存到 CoreData?

以一个名称将多个对象保存到 coredata

如何以一个名称将多个对象保存到 CoreData

保存后 UITableViewCell 和 Coredata 上的 UIImage 的方向发生了变化

RestKit/CoreData 没有立即将关系保存到持久存储