CoreData:用新版本替换数据模型?

Posted

技术标签:

【中文标题】CoreData:用新版本替换数据模型?【英文标题】:CoreData: Replacing Data Model with New Version? 【发布时间】:2011-03-07 22:44:45 【问题描述】:

我的应用最初是使用简单的 CoreData 模型发布的。原始源代码已丢失,并已使用全新的 CoreData 模型重新构建。

在您考虑安装要升级的旧应用程序之前,一切似乎都很好。我不完全确定,但似乎在安装新版本而不是当前在 App Store 上发布的旧版本时存在问题。我没有收到任何具体的错误消息,但我想不出应用程序会快速崩溃的任何其他原因。

有没有一种比较简单的方法可以将旧版本的数据模型替换成新的?

【问题讨论】:

我应该问这个问题:您是否有权访问用于原始应用程序的配置文件?您需要使用相同的配置文件来更新应用商店中的应用。 【参考方案1】:

查看Core Data Model Versioning and Data Migration Programming Guide。

您需要创建架构的新“版本”,然后迁移到新架构。

【讨论】:

没有原始源代码怎么办? 在不知道设备上 coredata 存储的现有数据模型的情况下,我认为您将无法访问该数据来迁移它。您也许可以使用自省对数据字段进行逆向工程,但这需要一些工作。 如果你没有原始的数据模型源文件,你几乎是死在水里。【参考方案2】:

自己进行迁移。在初始运行期间读取 previos 数据库并将所有内容复制到新数据库。如果您越狱了您的设备,您可以使用文件资源管理器访问文件系统,并可以从文档文件夹中复制 sqlite 数据库文件。您可以通过查看 Sqlite 表找到 coredata 模型(当然需要一些试验和错误)。

【讨论】:

以上是关于CoreData:用新版本替换数据模型?的主要内容,如果未能解决你的问题,请参考以下文章

[NSBundle allBundles] 中未出现单独的 CoreData 模型

如何在刚刚创建目标实体模型的 Coredata 中迁移实体

核心数据:如何处理新版本?

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

iOS CoreData 版本升级和数据库迁移

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