我不确定瞬态属性的正确定义:
我的问题:在对象模型中声明瞬态属性有什么好处? 我只看到一个漏洞:每次添加一个瞬态属性(例如“FormattedDate”)时,persistentStore都会变得不兼容。
我错过了什么?
答案 0 :(得分:6)
来自Core Data Programming Guide:
如果不支持的属性是对象,则在托管对象模型中将其类型指定为未定义,并且它是瞬态的。实现实体的自定义类时,无需为属性添加实例变量 - 您可以使用托管对象的私有内部存储。关于下面描述的实现的注意事项是它们缓存瞬态值。这使得访问价值更有效 - 它也是变更管理的必要条件。如果定义自定义实例变量,则应该在didTurnIntoFault中清除这些变量,而不是dealloc或finalize。
我认为这意味着“方便”和“将所有属性定义在一个地方 - 管理对象模型”。
至于MOM版本控制,Core Data Model Versioning and Data Migration Programming Guide说:
Core Data对版本控制的看法是,它只对影响持久性的模型功能感兴趣。
然而,它没有阐明其对瞬态特性的立场。事实上,阐述该段的第二个要点几乎听起来像是一个矛盾。快速测试(带有“name”属性的简单“Foo”实体的新项目,保存具有多个foos的文件,添加瞬态属性,再次运行,并且foos全部加载,添加新的foo,保存,关闭,重新打开)显示版本系统不考虑瞬态属性。