作爲我的同步解決方案的一部分,我對某個類的所有對象使用sync status
。只要該對象的特定(不是全部)屬性發生更改,我想更新狀態。屬性更改時更新標誌
我正在考慮四種方法:手動設置代碼中的地位,無論我改變 一些需要同步
- 。這是最明顯的,但也是最費力和容易出錯的(我需要記得在添加新功能時添加同步狀態更新)。
- 使用核心數據通知(例如
willSave
或NSManagedObjectContextObjectsDidChangeNotification
)對其進行跟蹤。這似乎是乍一看最合適 - 我只需在我的AppDelegate中註冊通知,並且每次更新 狀態。但是有可能檢查 的更改,並且只有在我關心的屬性更新爲 時才更新同步狀態?另外,不會設置sync_status
本身也會觸發這個通知,導致我陷入無限循環?我將如何解決這個問題? - 關於我關心的屬性的自定義setter。我有 麻煩試圖讓這個工作之前,並最終決定 試圖離開標準的核心數據獲取/設置單獨。但如果它是最合適的,我會回到這個問題。
- KVO。我之前沒有使用過這種模式,但它可能是最簡單的 只需註冊屬於我的 有關的屬性更改通知並在那裏設置標誌。但我會在哪裏做這個?我需要 來監視班級的每個對象,那麼是否有可能開始在同一對象的
awakeFromInsert
中觀察屬性的KVO通知的 ? 也就是說,無論何時創建一個對象,立即就有相同的對象偵聽屬性A的更改並在其觸發時設置它自己的sync_status
?
哪種方法最適合我?也許我錯過了一些其他的想法?
另一種方法是通知接收方有任何變化的協議。你可以用字典來傳輸相關數據? – katzenhut 2013-02-18 23:16:00