2010-01-26 38 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