Core data 核心数据:观察特定类型的新实体

Core data 核心数据:观察特定类型的新实体,core-data,nsmanagedobject,nsmanagedobjectcontext,nsnotifications,Core Data,Nsmanagedobject,Nsmanagedobjectcontext,Nsnotifications,我希望在添加(可能更改/删除)某种类型的实体时收到通知 我了解到,可以通过向managedObjectContext添加一个观察者来实现。然而,我还没有找到一个真正的方法来做到这一点 我正在做: [context addObserver:self forKeyPath:@"{myEntityName}" options:{I have tried several different values, but I am failing to understand which one to use}

我希望在添加(可能更改/删除)某种类型的实体时收到通知

我了解到,可以通过向managedObjectContext添加一个观察者来实现。然而,我还没有找到一个真正的方法来做到这一点

我正在做:

[context addObserver:self forKeyPath:@"{myEntityName}" options:{I have tried several different values, but I am failing to understand which one to use} context:@"NewEntity"];
谢谢你的帮助

注意:我对coredata/cocoa/objective-c显然是新手,这可能是非常基本的,但我一直在寻找答案。找不到关于如何正确观察上下文对象更改的示例和/或解释(我已经能够观察到特定实体上的更改,没有问题)


顺便说一句:这是一个类似的问题,表明这是可能的,但我缺乏细节:

首先,不要混淆实体和对象。实体是类似于类的抽象,它们从不添加到托管对象上下文或从托管对象上下文中删除。在托管对象上下文中添加或删除的是托管对象。每个托管对象都被键控到数据模型中的实体,就像任何其他对象实例被键控到特定类一样

因此,您真正想要的是在插入/更新/删除键控到特定实体的托管对象时收到通知

处理此问题的最简单方法是注册上下文的:

NSManagedObjectContextObjectsDidChangeNotification
…它将在上下文中插入/更新/删除托管对象时提供通知。要仅查找键入到特定实体的托管对象,请检查NSInsertedObjectsKey、NSUpdatedObjectsKey和NSDeletedObjectsKey键返回的对象,然后检查每个对象的
实体
属性

或者,使用自定义NSManagedObject子类并重写
awakeFromInsert
,在首次插入对象时发出通知


我要指出的是,这种功能很少需要。当您发现自己连接了很多通知时,这通常表明您的数据模型需要重新设计以捕获更多信息。您通常需要通知,因为数据模型的某些关键逻辑没有编码在核心数据中,而是驻留在需要通知的外部对象中。

我选择这种方法,它感觉更干净:

  • 创建基于实体的
    NSArrayController
    (使用界面生成器编写更少的代码)
  • 观察阵列控制器的键路径
  • 完成了

谢谢!这是成功的。对于查找特定代码的任何人:
[[NSNotificationCenter defaultCenter]addObserver:自选择器:@selector({some method})名称:NSManagedObjectContextObjectsIDChangeNotification对象:上下文]