У меня есть сущность (Заказ), которая имеет отношение ко многим с Элементом сущности, которая имеет отношение ко многим с примечанием к сущности. Если цена для примечания изменяется или добавляется примечание, атрибут «цена» для соответствующего ордера должен обновиться.
В настоящее время мое решение состоит в том, чтобы все объекты Order подписались на уведомления NSManagedObjectContextDidChange и проверили все вставленные / измененные объекты, чтобы увидеть, является ли какой-либо из этих объектов одной из заметок элемента Order. Тем не менее, это очень неэффективно и хакерски, и приводит к еще нескольким проблемам с производительностью, которые можно оптимизировать, но я начинаю понимать, что мое решение - это то, что неисправно, а не обязательно проблемы.
Итак, как лучше это сделать?
РЕДАКТИРОВАТЬ: Чтобы ответить на вопросы, поднятые Рогом: я собираюсь распространить изменения в данных модели, которые наблюдаются контроллерами представления через KVO. Проблема, которую я замечаю, состоит в том, что, если цена Ноты, относящейся к Предмету, корректируется, нет возможности учесть это в Базовых данных. Если я использую keyPathsForAffectingPrice для Item и возвращаю «заметки», это учитывается только при добавлении / удалении заметок, а не при корректировке цены заметки.
Если бы это не были Базовые данные, я бы написал свой собственный метод доступа по цене примечания, чтобы просто сказать [self.item willChangeValueForKey: @ "price"], self.price = x, [self.item didChangeValueForKey: @ " цена"]; но это невозможно, так как я не могу создавать собственные средства доступа в Core Data, верно?