具有额外 ivars 和方法的核心数据管理对象
Posted
技术标签:
【中文标题】具有额外 ivars 和方法的核心数据管理对象【英文标题】:Core data managed objects with extra ivars and methods 【发布时间】:2009-05-20 00:42:18 【问题描述】:可以将 ivars 和方法添加到 NSManagedObject 的实例吗?
“额外”是指您不想序列化的 ivars。
我是像任何其他类一样将它们添加到我的 NSManagedObject 子类中,还是必须采取任何额外的预防措施?
【问题讨论】:
【参考方案1】:您完全可以按照您的描述进行操作。如果 ivars 不在实体描述中,则它们不是基础模型的一部分。 Core Data 实际上明确支持不持久化的 NSManagedObject 属性——它们被标记为“瞬态”。但是,如果您确实制作了自定义 ivars,您应该记住放弃 didTurnIntoFault
中的“额外”实例变量,而不是像使用普通对象那样使用 dealloc
。
【讨论】:
谢谢,这听起来很简单。与仅添加 ivars 相比,使用瞬态属性有什么优势? 瞬态 ivars 从 Core Data 获得更改跟踪支持,因此如果修改了瞬态属性,则将对象标记为已更改。这使您可以在 getter/setter 中进行自定义处理,例如作为非核心数据类型的瞬态属性,它被序列化为 NSData 属性。 它也(应该——我从未真正使用过Core Data)支持撤消管理。以上是关于具有额外 ivars 和方法的核心数据管理对象的主要内容,如果未能解决你的问题,请参考以下文章
在 Apple 的“TaggedLocations”核心数据示例中,ivar NSManagedObjectContext 获得了一个值,但我找不到在哪里?