ruf*_*ufo 4 core-data nsnotifications nsmanagedobject nsmanagedobjectcontext
我希望每当添加某种类型的实体(并且可能更改/删除)时都会收到通知.
我通过向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"];
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助.
注意:我显然是coredata/cocoa/objective-c的新手,这可能是非常基本的,但一直在追逐答案.无法找到关于如何正确观察上下文对象的更改的示例和/或解释(我已经能够观察到特定实体的更改而没有问题).
顺便说一句:这是一个类似的问题,表明这是可能的,但我缺乏细节:核心数据:观察某些类型的实体的所有变化
首先,不要混淆实体和对象.实体是类似于类的抽象,它们永远不会添加到托管对象上下文或从托管对象上下文中删除.它是在托管对象上下文中添加或删除的托管对象.每个托管对象都键入数据模型中的实体,就像任何其他对象实例键入特定类一样.
因此,当您插入/更新/删除键入特定实体的托管对象时,您真正想要的是通知您.
处理此问题的最简单方法是注册上下文:
NSManagedObjectContextObjectsDidChangeNotification
Run Code Online (Sandbox Code Playgroud)
...每当插入/更新/删除上下文中的托管对象时,它将提供通知.要仅查找键入特定实体的托管对象,请检查NSInsertedObjectsKey,NSUpdatedObjectsKey和NSDeletedObjectsKey键返回的对象,然后检查entity每个对象的属性.
或者,您使用自定义NSManagedObject子类并覆盖awakeFromInsert以在首次插入对象时发出通知.
我会注意到很少需要这样的功能.当您发现自己连接大量通知时,通常表明您的数据模型需要重新编写以捕获更多信息.您通常需要通知,因为数据模型的某些关键逻辑不是在Core Data中编码,而是驻留在需要通知的外部对象中.
| 归档时间: |
|
| 查看次数: |
2899 次 |
| 最近记录: |