2014-01-27 4 views
0

Есть ли способ изменить атрибуты объекта также связанные с объектом объекты?Распространение изменений CoreData на связанные объекты

Структура, которую мы имеем следующий:

  • Image имеет атрибут content
  • Category имеет отношение один к одному к Image

Было бы идеально, если изменения для атрибутов в пределах объекта Image может быть обнаружено связанным Category таким образом, что Category будет включен в NSUpdatedObjectsKey от NSManagedObjectContextObjectsDidChangeNotification. Я видел некоторые предложения, указывающие на то, что добавление атрибута sentinel, такого как needsUpdate, до Category, было бы хорошим способом сделать это, но это похоже на громоздкий способ справиться с этим.

Мои рассуждения для этого является то, что мне нужно перезагрузить TableView всякий раз, когда Category изменения, или всякий раз, когда это связано Image изменения, в данный момент в моем методе наблюдения за NSManagedObjectContextObjectsDidChangeNotification проверить обновленные/удаленные/вставленные объекты для Image экземпляров или Category экземпляры, однако Image экземпляры используются в другом месте приложения и могут не иметь отношения к экземпляру Category, и в этом случае было бы ненужным перезагрузку таблицы. Я мог вручную прокручивать обновленные/удаленные/вставленные объекты, чтобы увидеть, являются ли они Image экземплярами, связанными с Category, но это не похоже на лучшее место для этого.

Я обнаружил, что this question похож на то, что я пытаюсь, однако у него нет ответа.

Пожалуйста, дайте мне знать, если необходима дополнительная информация, или если мой вопрос слишком запутан.

Редактирование: Модифицировано, чтобы надеяться сделать более очевидным, что меня интересует Category, осознавая изменения в атрибутах объекта Image, а не в изменении самой связи.

ответ

0

Я бы посоветовал узнать о KVO (Key Value Observing), поскольку эта структура разработана специально для этой цели. С помощью KVO вы можете прослушивать определенный объект для изменения его атрибутов и затем реагировать на них.

Однако, я спрашиваю, почему вы не используете NSFetchedResultsController для этого. Это то, для чего предназначен NSFetchedResultsController.

+0

Если я правильно понял вопрос, это касается отслеживания изменений связанных объектов. NSFetchedResultsController не делает этого сам по себе, как сказал нам некоторый мастер Core Data: http://stackoverflow.com/a/7534013/1187415. –

+0

Просмотр категории, и если отношения изображения меняются, тогда он срабатывает. Из моего чтения OP связь изменилась бы, а не данные внутри объекта изображения. –

+0

Я согласен с тем, что использование функции NSFetchedResultsController было бы полезным, однако, как упоминалось в @MartinR, я не думаю, что он адекватно решает проблему (по крайней мере, сам по себе). У меня нет веских оснований для того, почему я не использовал 'NSFetchedResultsController', я, скорее всего, не был знаком с CoreData, когда я изначально реализовал tableview (таким образом, делал трудный путь) и так и не нашел достаточных оснований для его реорганизации После этого появится 'NSFetchedResultsController'. – Arkcann

Смежные вопросы