在运行期间dynamic创build核心数据实体

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

我的问题是类似于这个职位,但没有令人满意的答案: 如何dyanmic通过CoreData模型创build一个新的实体(表)?

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

被pipe对象模型是可编辑的,直到它们被对象图pipe理器(pipe理对象上下文或持久存储协调器)使用。 这使您可以dynamic创build或修改它们。 但是,一旦使用了模型,就不能改变。 这是在运行时强制执行的 – 当对象pipe理器首先使用模型获取数据时,整个模型变得不可编辑。 在该点之后,任何试图改变模型或其任何子对象的尝试都会引发exception。 如果您需要修改正在使用的模型,请创build副本,修改副本,然后丢弃旧模型的对象。

然而,我不清楚这是什么意思 – 整个核心数据模型不能改变一旦使用持久性存储协调器或不能改变个体实体的属性等。

要清楚,我不想改变我现有的实体的属性,我只是想添加新的实体。 我不得不使用迁移来添加新的实体,这似乎很奇怪。

有什么想法吗?

谢谢!

文件很清楚。

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

迁移可能是一个棘手的问题,但应该是可行的。