我不确定瞬态属性的正确定义:
- 可以在对象模型中定义瞬态属性,然后在需要时在相关类中计算它们。
- 但是,如果您指定一个类并为任何瞬态属性定义任意 getter 方法而不在对象模型中声明它(只要实体链接到模型中的该类),那么事情也同样有效。
我的问题:在对象模型中声明瞬态属性有什么好处?我只看到一个缺点:每次添加一个瞬态属性(例如“FormattedDate”)时,persistentStore 就会变得不兼容。
我错过了什么?
我不确定瞬态属性的正确定义:
我的问题:在对象模型中声明瞬态属性有什么好处?我只看到一个缺点:每次添加一个瞬态属性(例如“FormattedDate”)时,persistentStore 就会变得不兼容。
我错过了什么?
从核心数据编程指南:
如果不受支持的属性是一个对象,那么在托管对象模型中,您将其类型指定为未定义,并且它是瞬态的。当您实现实体的自定义类时,无需为属性添加实例变量——您可以使用托管对象的私有内部存储。关于下面描述的实现需要注意的一点是它们缓存了瞬态值。这使得访问价值更有效——这也是变更管理所必需的。如果定义自定义实例变量,则应在 didTurnIntoFault 中清理这些变量,而不是在 dealloc 或 finalize 中清理。
我认为这意味着“方便”和“将所有属性定义在一个地方 - 托管对象模型”。
至于 MOM 版本控制,核心数据模型版本控制和数据迁移编程指南说:
Core Data 对版本控制的看法是,它只对影响持久性的模型特性感兴趣。
然而,它并没有阐明它对瞬态特性的立场。事实上,阐述该段落的第二个要点听起来几乎是自相矛盾的。一个快速测试(新项目带有一个简单的“Foo”实体和一个“name”属性,保存一个包含多个 foo 的文件,添加一个临时属性,再次运行,并且 foo 全部加载,添加一个新的 foo,保存,关闭, re-open) 显示瞬态属性实际上不被版本控制系统考虑。