我需要能够在运行时创建新的核心数据实体。我已经编写了代码来以编程方式创建对象,但是,我无法在运行时添加实体,因为模型是不可变的。
我的问题与这篇文章类似,但没有令人满意的答案:如何通过Core Data模型动态创建新的实体(表)? https://stackoverflow.com/questions/5341815/how-to-dyanmic-create-a-new-entity-table-via-coredata-model%5B1%5D
有关更改核心数据模型的文档解释道:
托管对象模型在被对象使用之前是可编辑的
图形管理器(托管对象上下文或持久存储
协调员)。这允许您动态创建或修改它们。
但是,模型一旦使用,就不得更改。这是
在运行时强制执行——当对象管理器第一次使用
模型,整个模型变得不可编辑。任何尝试
在该点之后改变模型或其任何子对象会导致
要抛出的异常。如果您需要修改正在使用的模型,
创建一个副本,修改该副本,然后使用以下命令丢弃对象
旧型号。
但是,我不清楚这到底是什么意思——一旦使用了持久存储协调器,或者单个实体的属性等就无法更改,整个核心数据模型就无法更改。
需要明确的是,我不想更改当前实体的属性,我只是想add新实体。对我来说,必须使用迁移来添加新实体似乎很奇怪。
有什么想法吗?
Thanks!
文档非常清楚。
- 复制模型。
- 将您的更改应用到新副本。
- 销毁旧的 MOC、持久存储协调器以及从这些对象创建的所有对象。
- 如有必要,应用迁移。
- 使用更新的模型创建新的核心数据堆栈(MOC、PSC 等)。
迁移可能是一个症结所在,但它应该是可行的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)