在运行时动态创建 Core Data 实体

Posted

技术标签:

【中文标题】在运行时动态创建 Core Data 实体【英文标题】:Create Core Data entities dynamically during runtime 【发布时间】:2015-04-28 00:50:35 【问题描述】:

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

我的问题和这个帖子类似,但是没有满意的答案:How to dyanmic create a new entity (table) via CoreData model?

有关更改核心数据模型的文档说明:

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

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

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

有什么想法吗?

谢谢!

【问题讨论】:

【参考方案1】:

文档很清楚。

    复制模型。 将更改应用到新副本。 销毁旧的 MOC、Persistent Store Coordinator 以及由此创建的所有对象。 如有必要,请应用迁移。 使用更新后的模型创建新的核心数据堆栈(MOC、PSC 等)。

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

【讨论】:

以上是关于在运行时动态创建 Core Data 实体的主要内容,如果未能解决你的问题,请参考以下文章

在 Spring Data JPA 中,如何在运行时添加实体?

asp.net core, Ef core : 在运行时动态映射存储库和服务

Entity Framework Core 中的动态数据模型

我如何在 Swift 中的 RunTIme 上创建或生成新实体

在 Core Data 中为实体添加属性

如何根据数据库的字段动态创建实体类? 用java啊~ 最好给点源码和实例