簡體   English   中英

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保存時)觸發所有屬性的刷新。 cf: mergeChangesFromContextDidSaveNotification之后的KVO通知

關於如何處理該行為的建議:通常,kvo代碼應該是冪等且快速的,這恰恰是因為它可能經常被調用,即在設置鍵路徑時會被調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM