2
|
Coocoo4Cocoa · 技术社区 · 16 年前 |
![]() |
1
16
它不使用IVARS的原因是数据不在那里。当您加载一个对象时,它可能不会在其所有数据中出错。如果NSManagedObject还没有加载,它就没有机会出错,那么ivar只是变量。via访问器nsmanagedObject有一个阻塞点,允许它在尚未出现故障的情况下从磁盘读取数据,这意味着对象图可以被延迟地引入。否则,您将需要引入每个连接的对象。 因此,您不能只添加ivar,它们将没有您想要的值。同样,您不能从@dynamic更改为@synthesized,事情将无法正常运行。coredata提供的动态属性实现完全符合kvc和kvo。 如果您想访问这些值而不触发kvo或kvc,您可以访问“原始”值。你可以用两种方法中的一种来做。您可以使用primitiveValueForkey:和setPrimitive:ValueForkey:或者您只需声明该原语并让CD提供动态实现(从 documentation )
|
![]() |
2
3
您不需要具有核心数据的实例变量。托管对象将这些值存储在其他地方。
我对核心数据的了解从来没有太多,但是如果我记得正确的话,你应该使用
|