gpt4 book ai didi

core-data - 核心数据 : Observing new Entity of certain type

转载 作者:行者123 更新时间:2023-12-04 15:50:57 26 4
gpt4 key购买 nike

每当添加某种类型的实体(并且可能更改/删除)时,我都希望收到通知。

我读到通过向 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 的新手,这可能是非常基础的,但已经追寻答案太久了。找不到有关如何正确观察上下文对象更改的示例和/或解释(我已经能够毫无问题地观察特定实体的更改)。

顺便说一句:这是一个类似的问题,表明这是可能的,但我缺乏细节: Core Data: Observing all changes on Entity of certain type

最佳答案

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

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

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

NSManagedObjectContextObjectsDidChangeNotification

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

或者,您可以使用自定义 NSManagedObject 子类并覆盖 awakeFromInsert在第一次插入对象时发出通知。

我会注意到很少需要这样的功能。当您发现自己连接了大量通知时,这通常表明您的数据模型需要重新设计以捕获更多信息。您通常需要通知,因为数据模型的某些关键逻辑未编码在 Core Data 中,而是驻留在需要通知的外部对象中。

关于core-data - 核心数据 : Observing new Entity of certain type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7277023/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com