2010-01-26 16 views
2

我正在編寫一個核心數據可可應用程序,其中有賬戶和交易(貨幣)。帳戶實體說明包含餘額屬性。交易實體說明與帳戶有關係。可可綁定:改變時獲得舊值

我需要應用程序來更新賬戶餘額,當交易有他們的賬戶設置或更改。例如,如果交易賬戶從支票變爲信用,則應更改支票和信用餘額以反映此情況。

我遇到的問題是我不確定如何確定交易的舊帳戶,以便我可以更新餘額。我正在使用綁定。

任何人都可以指向正確的方向嗎?

回答

1

我假設賬戶實體與交易有反比關係。 (蘋果公司強烈建議你總是有相反的關係。所以,如果你沒有,請設置它!)

比方說,你有一個子類的NSManagedObject爲帳戶實體AccountTransaction爲交易單位。 與transactions調用與交易的反比關係。

然後,當您更改事務帳戶時,CoreData自動更新反比關係。因此,您只需要在Account中編寫一個transactions的自我觀察例程,以便Account對象自己跟蹤天平。我認爲它更傾向於面向對象 - 使得Account物體自己照顧自己,而不是從Transaction對象的一側改變平衡......儘管這當然取決於你的口味。

要執行觀察,請使用KVO。基本上,您可以通過addObserver:forKeyPath:options:context:註冊KVO和一系列適合的選項。然後,通過執行observeValueForKeyPath:ofObject:change:context:來獲得更改。這些更改可以在傳遞給該方法的字典中找到。

+0

請確保在你的'options:'設置中指定了'-addObserver:forKeyPath:options:context:'你希望傳入新值和舊值。 – 2010-01-26 18:37:44