我需要能够在运行时创建新的核心数据实体。我编写了以编程方式创建对象的代码,但是,我无法在运行时添加实体,因为模型是不可变的。
我的问题与这篇文章类似,但没有令人满意的答案:How to dyanmic create a new entity (table) via CoreData model?
有关更改核心数据模型的文档说明:
托管对象模型在对象使用之前是可编辑的 图形管理器(托管对象上下文或持久性存储) 协调员)。这允许您动态创建或修改它们。 但是,一旦使用模型,就不能更改它。这是 在运行时强制执行 - 当对象管理器首次使用a获取数据时 模型,整个模型变得不可编辑。任何企图 在该点之后导致模型或其任何子对象变形 被抛出的异常。 如果您需要修改正在使用的模型, 创建副本,修改副本,然后丢弃对象 旧模型。
但是,我不清楚这究竟是什么意思 - 一旦使用持久性存储协调器或者不能更改单个实体的属性/等,整个核心数据模型就无法更改。
要明确,我不想更改当前实体的属性,我只想添加新实体。我不得不使用迁移来添加新实体,这似乎很奇怪。
有什么想法吗?
谢谢!
答案 0 :(得分:2)
文档很清楚。
迁移可能是一个棘手的问题,但它应该是可行的。