我有一個對象 - Config
。我想知道Config
上的Account
屬性是否已更改。發生這種情況時,我想發送一個NSNotification
,以便在Account
更改將知道時關心所有代碼。我最初的想法是在我的NSManagedObject
子類中,我將覆蓋setAccount
方法來將瞬態屬性AccountDidChange
設置爲true
。然後在didSave
如果AccountDidChange
是true
我會發送通知,然後將其設回false
。有沒有更好的辦法?我的問題是,從我讀過的內容來看,通過將AccountDidChange
更改回false
,我會弄髒我的物體並需要再次保存。核心數據NSManagedObject - 跟蹤屬性是否已更改
有點多信息: Config
對象是應用程序的當前配置。 Account
實際上可以更改爲ActiveAccount
。與具有所有帳戶列表的Account
實體有關係。這個想法是,用戶可以更改應用程序的活動帳戶。所以我們有一組服務器,用戶一次只能登錄一個。 Config.Account
指向該活動帳戶,它用於建立到服務器的連接以檢索信息。我正在使用此通知,Config.Account
已更改爲告知其他對象清理其信息 - 如警報列表。基本上,所有信息都是按照每個帳戶進行的,因此需要將其刪除,然後使用新的活動帳戶重新進行下次加載。
此外,給定的名稱不是我的實際對象名稱 - 只是試圖讓示例更容易遵循。
如果我正確理解了這一點,那麼當account改變時不會調用observeValueForKeyPath ...,而不僅僅是當它被保存。我想我應該更具體一點,我想知道它何時實際保存到商店。另外,也許我有第二個問題 - 這不完全理解何時/如何保存更改。即使我更改了我的配置帳戶的值,但它在保存之前並未真正更改。也許更改和保存應該發生在第二個上下文中,然後合併到主應用程序上下文中。這對我來說仍然是新鮮的,但謝謝你。 – Brian 2012-02-15 18:27:27
我添加了更多信息 - 感謝您的幫助。 – Brian 2012-02-15 19:31:59
我仍然不明白爲什麼你只想通過保存通知,而不是當活動帳戶更改時。但是,由於應用程序中顯然只有一個Config對象,因此很容易在應用程序控制器中跟蹤對其的更改(或者最有意義的地方),並在託管對象上下文的NSManagedObjectContextDidSaveNotification中發佈通知(如果活動帳戶自上次保存以來發生了變化。 – 2012-02-15 19:45:12