gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 16:01:33 24 4
gpt4 key购买 nike

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

最佳答案

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

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

关于swift - KVO 方法在 NSManagedObject 属性上触发两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40985997/

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