Принуждение управляемого объекта к загрязнению - PullRequest
2 голосов
/ 01 ноября 2011

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

1 Ответ

0 голосов
/ 01 ноября 2011
  • На Mac вы должны использовать NSPersistentDocument для большинства случаев, когда это будет полезно.
  • В iOS 5+ вы должны использовать UIDocument.

Если это невозможно, вы можете либо заставить родителя наблюдать за изменениями в своих дочерних элементах, либо установить для дочерних элементов измененный флаг на своих родительских элементах. В любом случае вы можете изменить какое-либо свойство «последнее изменение», чтобы оно стало грязным.

Вы также можете создать метод, такой как -hasChangedChildren, который будет обходить дочернее дерево и возвращать YES, если он грязный. Преимущество этого состоит в том, что вы фактически не модифицируете объект, поэтому вы не влияете на оптимизацию Core Data. Документы не запрещают изменять hasChanges, чтобы вести себя таким образом, но я лично был бы осторожен при этом.

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

Вас также могут заинтересовать Основные вопросы о данных - отношения, UUID и грязные состояния .

...