我正在编写一个核心数据Cocoa应用程序,其中有帐户和交易(货币)。帐户实体描述包含余额属性。交易实体描述与账户有关系。
我需要应用程序在交易帐户设置或更改时更新帐户余额。例如,如果交易的账户从支票变为信用,则应更改支票和信用的余额以反映这一点。
我遇到的问题是我不确定如何确定交易的旧帐户,以便我可以更新其余额。我正在使用绑定。
有人能指出我正确的方向吗?
答案 0 :(得分:1)
我假设帐户实体与交易具有反向关系。 (Apple强烈建议你总是有反向关系。所以如果你还没有,请设置它!)
假设您为帐户实体设置了Account
的子类NSManagedObject
,并为事务实体设置了Transaction
。
将事务的反向关系称为transactions
。
然后,当您更改事务的帐户时,CoreData会自动更新反向关系。因此,您所要做的就是在transactions
中为Account
编写一个自我观察例程,以便Account
个对象自己跟踪平衡。我认为让Account
个对象自己照顾自己比从Transaction
对象那边改变平衡更加面向对象......当然这取决于你的品味。
要执行观察,请使用KVO。基本上,您通过addObserver:forKeyPath:options:context:
使用一组合适的选项注册KVO。然后,您可以通过实施observeValueForKeyPath:ofObject:change:context:
来获得更改。可以在传递给该方法的字典中找到更改。