在阅读RestKit
关于RKManagedObjectStore的文档后,我对createPersistentStoreCoordinator
方法感到困惑,因为此方法的说明中有下一个警告:
**Warning:** Creating the persistent store coordinator will
render the managed object model immutable. Attempts to
use functionality that requires a mutable managed object model
after the persistent store coordinator has been created
will raise an application error.
我不明白它是什么意思immutable
托管对象模型?我无法在官方Core Data
文档或互联网上找到有关此主题的任何信息。有人可以解释一下mutable
和immutable
托管对象模型之间的区别吗?为什么创建持久性存储协调器会呈现不可变的托管对象模型?什么功能需要可变的托管对象模型?
提前致谢。
答案 0 :(得分:2)
您可以在代码中更改NSManagedObjectModel(例如添加实体和属性),据说它是可变的。但是,一旦将对象模型附加到持久性存储协调器,就不允许再更改它 - 它已变得不可变。
NSManagedObjectModel的文档中也描述了这一点:
以编程方式编辑模型可管理的对象模型是可编辑的 直到它们被对象图管理器(托管对象)使用 上下文或持久存储协调器)。这允许您创建 或动态修改它们。但是,一旦使用了模型,它就会出现 不能改变。这是在运行时 - 对象时强制执行的 管理员首先使用模型获取数据,整个模型 变得无法控制。任何试图改变模型或任何模型的尝试 该点之后的子对象导致抛出异常。如果你 需要修改正在使用的模型,创建副本,修改副本, 然后用旧模型丢弃对象。