Привязки какао: получить старое значение при изменении - PullRequest
2 голосов
/ 26 января 2010

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

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

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

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

1 Ответ

1 голос
/ 26 января 2010

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

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

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

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

...