代码之家  ›  专栏  ›  技术社区  ›  Felix Lamouroux

什么时候CoreData中的瞬态属性应包含在对象模型中?

  •  9
  • Felix Lamouroux  · 技术社区  · 16 年前

    我不确定瞬态特性的正确定义:

    1. 可以在对象模型中定义瞬态属性,然后在相关类中需要时计算它们。
    2. 但是,如果您指定一个类并为任何瞬态属性定义任意getter方法,而不在对象模型中声明它(只要实体链接到模型中的该类),情况也会一样好。

    我的问题:在对象模型中声明瞬态属性有什么好处?

    1 回复  |  直到 16 年前
        1
  •  6
  •   Joshua Nozzi    16 年前

    Core Data Programming Guide :

    如果不受支持的属性是对象,则在托管对象模型中,您将其类型指定为未定义,并且它是瞬态的。实现entitys自定义类时,无需为属性添加实例变量。您可以使用托管对象的私有内部存储。下面描述的实现需要注意的一点是,它们缓存瞬时值。这使得访问价值更加有效,这对于变更管理也是必要的。如果定义自定义实例变量,则应该在didTurnIntoFault中清理这些变量,而不是dealloc或finalize。

    对于MOM版本控制 Core Data Model Versioning and Data Migration Programming Guide

    版本控制的核心数据观点是,它只对影响持久性的模型特性感兴趣。

    然而,它并没有阐明它对瞬态特性的立场。事实上,阐述该段的第二个要点听起来几乎是矛盾的。一个快速测试(带有简单“Foo”实体和“name”属性的新项目,用几个Foo保存一个文件,添加一个临时属性,再次运行,Foo全部加载,添加一个新Foo,保存,关闭,重新打开)显示,版本控制系统实际上不考虑临时属性。