强制托管对象变脏

时间:2011-10-31 21:21:36

标签: objective-c core-data nsmanagedobject

有没有办法强制托管对象进入脏状态?我有一个托管对象与父托管对象有关系。如果我更改了子托管对象的属性,我很好奇是否有办法将父托管对象置于脏状态。

1 个答案:

答案 0 :(得分:0)

  • 在Mac上,对于大多数有用的情况,您应该使用NSPersistentDocument
  • 在iOS 5+上,您应该使用UIDocument

如果这些不可能,那么您可以让父级观察其子级中的更改,或让子级在其父级上设置更改的标志。在任何一种情况下,您都可以修改一些“最后更改”属性,以使自己变脏。

您还可以创建一个类似-hasChangedChildren的方法,它可以遍历子树,如果有脏的话,则返回YES。这样做的好处是不会实际修改对象,因此不会影响任何Core Data优化。文档并不禁止修改hasChanges以这种方式行事,但我个人会小心这样做。

但是如果可能的话,你应该使用文档类,因为这就是他们的目的。

您可能也对Core Data Questions--Relationships, UUIDs, and Dirty States感兴趣。