在运行时动态创建核心数据实体

2024-01-03

我需要能够在运行时创建新的核心数据实体。我已经编写了代码来以编程方式创建对象,但是,我无法在运行时添加实体,因为模型是不可变的。

我的问题与这篇文章类似,但没有令人满意的答案:如何通过Core Data模型动态创建新的实体(表)? https://stackoverflow.com/questions/5341815/how-to-dyanmic-create-a-new-entity-table-via-coredata-model%5B1%5D

有关更改核心数据模型的文档解释道:

托管对象模型在被对象使用之前是可编辑的 图形管理器(托管对象上下文或持久存储 协调员)。这允许您动态创建或修改它们。 但是,模型一旦使用,就不得更改。这是 在运行时强制执行——当对象管理器第一次使用 模型,整个模型变得不可编辑。任何尝试 在该点之后改变模型或其任何子对象会导致 要抛出的异常。如果您需要修改正在使用的模型, 创建一个副本,修改该副本,然后使用以下命令丢弃对象 旧型号。

但是,我不清楚这到底是什么意思——一旦使用了持久存储协调器,或者单个实体的属性等就无法更改,整个核心数据模型就无法更改。

需要明确的是,我不想更改当前实体的属性,我只是想add新实体。对我来说,必须使用迁移来添加新实体似乎很奇怪。

有什么想法吗?

Thanks!


文档非常清楚。

  1. 复制模型。
  2. 将您的更改应用到新副本。
  3. 销毁旧的 MOC、持久存储协调器以及从这些对象创建的所有对象。
  4. 如有必要,应用迁移。
  5. 使用更新的模型创建新的核心数据堆栈(MOC、PSC 等)。

迁移可能是一个症结所在,但它应该是可行的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在运行时动态创建核心数据实体 的相关文章

随机推荐