2010-01-26 2 views
2

Я пишу основные данные Какао-приложение, в котором есть счета и транзакции (денежные). Описание объекта учетной записи содержит атрибут баланса. Описание сущности транзакции имеет отношение к учетной записи.Связывание какао: получить старую стоимость после изменения

Мне нужно приложение для обновления остатков на счетах, когда у транзакций установлены или изменены их учетные записи. Например, если учетная запись транзакции изменена с проверки на кредит, балансы как проверки, так и кредита должны быть изменены, чтобы отразить это.

Проблема, с которой я сталкиваюсь, заключается в том, что я не уверен, как определить старую учетную запись транзакции, чтобы я мог обновить ее баланс. Я использую привязки.

Может ли кто-нибудь указать мне правильное направление?

ответ

1

Я предполагаю, что объект учета имеет обратную связь с транзакциями. (Apple настоятельно рекомендует вам всегда иметь обратные отношения. Так что если у вас нет, пожалуйста, установите его!)

Допустим, у вас есть подкласс Account из NSManagedObject за счет лица, и Transaction для объекта сделки. Вызовите обратное отношение к транзакциям как transactions.

Затем, когда вы меняете учетную запись для транзакций, обратная связь автоматически обновляется CoreData. Итак, все, что вам нужно сделать, это написать процедуру самонаблюдения для transactions в Account, чтобы объекты Account отслеживали баланс самостоятельно. Я думаю, что более объектно-ориентированным-y сделать объекты Account, чтобы позаботиться о себе, чем изменить баланс со стороны объекта Transaction ... хотя, конечно, это зависит от вашего вкуса.

Для выполнения наблюдения вы используете KVO. В принципе, вы регистрируете KVO на addObserver:forKeyPath:options:context: с подходящим набором опций. Затем вы получаете изменение путем внедрения observeValueForKeyPath:ofObject:change:context:. Изменения можно найти в словаре, переданном этому методу.

+0

Убедитесь, что в параметре 'options:' '-addObserver: forKeyPath: options: context:' вы указываете, что хотите, чтобы были переданы как новые, так и старые значения. –