代码之家  ›  专栏  ›  技术社区  ›  GendoIkari

具有非托管属性的托管对象是否会出错?

  •  2
  • GendoIkari  · 技术社区  · 14 年前

    核心数据文档表明,如果需要,对象可能会错误地保存内存。如果对象的属性不是托管属性,会发生什么情况?

    如果您有一个部门对象数组,或者一个与部门有一对一关系的Employee对象,那么部门是否可能出错?如果您设置了Department.location,那么您是否可以确保该位置始终存在,或者该部门可能会出错,然后您将丢失存储在location中的值?

    2 回复  |  直到 11 年前
        1
  •  1
  •   ImHuntingWabbits    14 年前

    部门仍然有可能出错,它只会出错您在模型中描述的属性。通常,您所描述的情况由“transient”属性覆盖,这些属性不是存储在CoreData中的,但是对象模型知道它们。

    当您实现一个瞬态属性时,您提供了为该属性提供值所需的存储(或计算)。

    在您的情况下,假设您的“location”值将来不会存在是完全合理的,因为它只会在实际托管对象保留在内存中的情况下存在。换言之,任何导致被管理对象被释放的操作(如来自保存通知的上下文重置、保存或更新)都可能导致该值丢失(因为它所绑定的被管理对象已变为错误或无效)。

        2
  •  1
  •   John Franklin    14 年前

    1. 使其成为托管数据,或
    2. 使非托管数据可从托管数据计算,或