Пересчитать атрибут при каждом изменении другого атрибута в Core Data MO - PullRequest
0 голосов
/ 08 августа 2009

У меня есть атрибут в Управляемом объекте основных данных, который я пытаюсь обновить, в зависимости от другого атрибута.

Как я могу реализовать метод, который вызывается при каждом изменении исходного атрибута?

awakeFromInsert и awakeFromFetch, очевидно, не будут работать. Я видел keyPathsForValuesAffectingValueForKey, но я действительно не понимаю, как я мог это использовать.

Спасибо большое

1 Ответ

2 голосов
/ 08 августа 2009

Вы на правильном пути. Допустим, у вас есть два атрибута: foo и bar, причем bar рассчитывается на основе foo. Для этого вам необходимо реализовать метод +keyPathsForValuesAffectingBar:

+ (NSSet *)keyPathsForValuesAffectingBar {
    return [NSSet setWithObject:@"foo"];
}

Теперь при каждом изменении foo все объекты, связанные с bar, будут обновляться.

Очевидно, что это не принесет много пользы, если вы кешируете значение bar, поскольку вам нужно фактически пересчитать и повторно его перечитать. Однако, если вы не выполняете какие-то серьёзные жесткие вычисления для определения bar, вам действительно лучше просто вычислять bar при каждом вызове метода -bar.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...