Ios 核心数据中可变和不变的托管对象模型之间有什么区别?
在阅读了有关Ios 核心数据中可变和不变的托管对象模型之间有什么区别?,ios,objective-c,cocoa-touch,core-data,restkit,Ios,Objective C,Cocoa Touch,Core Data,Restkit,在阅读了有关RestKit的文档后,我对createpersistentstorecordinator方法感到困惑,因为该方法的描述中有下一个警告: **Warning:** Creating the persistent store coordinator will render the managed object model immutable. Attempts to use functionality that requires a mutable managed objec
RestKit
的文档后,我对createpersistentstorecordinator
方法感到困惑,因为该方法的描述中有下一个警告:
**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.
我没有理解它是什么意思不可变的
托管对象模型?无论是在官方核心数据文档中还是在互联网上,我都找不到关于这个话题的任何信息。有人能给我解释一下可变
和不可变
托管对象模型之间的区别吗?为什么创建持久存储协调器会呈现不可变的托管对象模型?什么功能需要可变的托管对象模型?
提前感谢。您可以在代码中更改NSManagedObjectModel(例如添加实体和属性),据说它是可变的。但是,一旦将对象模型附加到持久性存储协调器,就不允许再对其进行更改—它已变得不可变
以下文件中也对此进行了说明:
编辑模型以编程方式管理的对象模型是可编辑的
直到对象图管理器(托管对象)使用它们
上下文或持久存储协调器)。这允许您创建
或者动态地修改它们。然而,一旦模型被使用,它就会
不能改变。当对象
manager首先使用一个模型获取数据,整个模型都是这样
变得不可编辑。任何对模型或其任何部分进行变异的尝试
该点之后的子对象导致引发异常。如果你
需要修改正在使用的模型,创建副本,修改副本,
然后丢弃具有旧模型的对象
正如我通过编辑模型所理解的,它是假设的——改变对象图?