我正在读取设置瞬态属性的值总是导致将托管对象标记为“脏”。但是,我没有得到的是:如果我创建NSManagedObject的子类并使用一些我不需要持久化的额外属性,Core Data如何知道它们以及如何将对象标记为脏时我访问这些?
同样,它们没有在数据模型中定义,因此Core Data没有真正好的暗示他们在那里。
或者Core Data是否使用某种内省来分析我的自定义类并找出我在那里拥有的属性?
答案 0 :(得分:2)
NSManagedObject
/* Distinguish between changes that should and should not dirty the object for any key unknown to Core Data. 10.5 & earlier default to NO. 10.6 and later default to YES. */
/* Similarly, transient attributes may be individually flagged as not dirtying the object by adding +(BOOL)contextShouldIgnoreChangesFor<key> where <key> is the property name. */
+ (BOOL)contextShouldIgnoreUnmodeledPropertyChanges NS_AVAILABLE(10_6,3_0);
瞬态属性可以由Undo / Redo管理器处理,而不是额外的属性。
我发现核心数据的一些奇怪行为“脏”制定规则:
在iOS 5上设置-(void)didSave
中的瞬态属性使上下文变脏,但在iOS 4.3上没有。
how to make NSManagedObjectContext dirty (hasChanges = YES) Manually
我认为核心数据可能不会反映您NSManagedObjects