修改核心数据模型每次都需要新版本?

Posted

技术标签:

【中文标题】修改核心数据模型每次都需要新版本?【英文标题】:Modifying the Core Data Model Requires New Version Every Time? 【发布时间】:2013-12-04 00:43:27 【问题描述】:

我一直在四处寻找,让我弄清楚这一点,每次我更改实体的属性时,我都需要创建一个全新版本的模型吗?我知道 SQLite 数据库现在与我的数据模型不同步,但我不能删除 sql 文件并重新运行我的模拟器吗?这是我一直在做的,但它似乎不起作用。

【问题讨论】:

【参考方案1】:

您是对的,对核心数据模型的任何更改都必须在新的核心数据模型版本中进行。您可以通过在模拟器中重置内容和设置,或在安装之前删除设备上的旧应用程序版本来避免为开发构建执行此操作。但是,对于商店构建,您必须正确管理模型版本,以便用户将其持久性商店正确迁移到具有新模型的新商店。需要版本控制才能执行轻量级迁移,而无需编写自定义迁移代码。如果您不想对模型进行版本控制,则必须编写代码来正确迁移实体。这可能需要大量工作且难以维护,您宁愿使用轻量级迁移和版本控制。

【讨论】:

谢谢伙计。那么对于模拟器中的休息内容和设置,我会删除应用程序图标吗? “商店构建”是指在设备上发布和下载的应用程序? 没错,从模拟器或设备中删除应用程序将删除应用程序存在的所有文件,因此下次运行应用程序时,它将使用修改后的模型创建一个新的数据库文件。如果您对用于创建文件的模型进行了更改,应用程序将无法打开现有文件。 商店构建是指 App Store 上可用的应用程序,并且数据库包含需要保留的用户数据。如果您发布带有修改过的核心数据模型的新版本,那么除非您使用版本化模型,否则您将无法使用自动轻量级迁移。

以上是关于修改核心数据模型每次都需要新版本?的主要内容,如果未能解决你的问题,请参考以下文章

核心数据模型版本控制和数据迁移

确定核心数据模型何时有新版本

更新了核心数据模型,没有新版本,如何修复?

在新版本的应用程序中替换核心数据模型,无需以前的源代码

更改核心数据关系验证规则后保存缓慢

迁移复杂的核心数据模型