Cocoa绑定:在变化时获得旧值

时间:2010-01-26 04:03:21

标签: cocoa core-data cocoa-bindings

我正在编写一个核心数据Cocoa应用程序,其中有帐户和交易(货币)。帐户实体描述包含余额属性。交易实体描述与账户有关系。

我需要应用程序在交易帐户设置或更改时更新帐户余额。例如,如果交易的账户从支票变为信用,则应更改支票和信用的余额以反映这一点。

我遇到的问题是我不确定如何确定交易的旧帐户,以便我可以更新其余额。我正在使用绑定。

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

我假设帐户实体与交易具有反向关系。 (Apple强烈建议你总是有反向关系。所以如果你还没有,请设置它!)

假设您为帐户实体设置了Account的子类NSManagedObject,并为事务实体设置了Transaction。 将事务的反向关系称为transactions

然后,当您更改事务的帐户时,CoreData会自动更新反向关系。因此,您所要做的就是在transactions中为Account编写一个自我观察例程,以便Account个对象自己跟踪平衡。我认为让Account个对象自己照顾自己比从Transaction对象那边改变平衡更加面向对象......当然这取决于你的品味。

要执行观察,请使用KVO。基本上,您通过addObserver:forKeyPath:options:context:使用一组合适的选项注册KVO。然后,您可以通过实施observeValueForKeyPath:ofObject:change:context:来获得更改。可以在传递给该方法的字典中找到更改。