KVO 方法在 NSManagedObject 上触发两次 属性

KVO method firing twice on NSManagedObject property

正如标题所说,我正在使用 KVO 观察 NSManagedObject 属性。方法 override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) 触发了两次:第一次是在为 属性 分配新值时,第二次是在我将上下文保存在 CD 中时。我在设置 属性 值后立即这样做。因此,我在代码中遇到了另一个问题,我的问题是为什么会发生这种情况,以及正确的方法是什么(设置 属性,保存上下文并触发一次方法)。也许我不应该在之后立即保存上下文?

我相信我的上述评论(直觉)实际上是正确的。它似乎没有记录,但在所有平台上观察到 mergeChangesFromContextDidSaveNotification(即当您的 MOC 保存时)触发所有属性的刷新。 比较:KVO notifications after mergeChangesFromContextDidSaveNotification

关于如何处理该行为的建议:通常,kvo 代码应该是幂等且快速的,正是因为它可以经常被调用,即当设置键路径时。