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

Posted

技术标签:

【中文标题】在新版本的应用程序中替换核心数据模型,无需以前的源代码【英文标题】:Replace core data model in new version of app without having previous source code 【发布时间】:2016-08-31 15:47:11 【问题描述】:

您好,我遇到了核心数据迁移问题。我开发了一个应用程序,它是 Appstore 中现有应用程序的新版本。但是我没有以前版本的源代码,也不知道旧版本是否使用了核心数据。那么如何在没有任何崩溃的情况下将我的应用程序(具有核心数据)更新到 Appstore。请问有什么快速的解决方法吗?

【问题讨论】:

如果您不知道旧版本是否使用Core Data,您希望如何迁移旧数据?还是您只是丢弃/忽略任何旧数据? 我想忽略我的旧数据(如果存在)。 【参考方案1】:

由于您在评论中提到要忽略旧数据,因此您无需进行任何类型的迁移。模型迁移是关于更新现有数据以使用更新的数据模型。唯一的危险是如果旧应用程序使用 Core Data您的新应用程序尝试使用具有相同文件名的持久存储文件。然后您的应用会尝试加载旧数据,因为它会找到具有正确名称的文件。

最简单的测试方法是:

    安装现有应用(从应用商店) 使用此应用,直到您确定它可以节省一些数据 从 Xcode 安装新版本。由于是升级版,所以会覆盖应用商店的副本。

到那时,您将确切知道升级时会发生什么。如果您遇到与 Core Data 相关的崩溃,请更改您的 Core Data 设置以使用不同的文件名。然后从您的 ios 设备中删除该应用程序并从上面重复测试。

【讨论】:

如有必要,最好有在首次启动时删除现有数据库文件的代码。不要在沙箱中留下垃圾。 如果您知道这些文件的名称。听起来好像不是这样。 您可以查看沙箱。 @Avi 如果你觉得你有更好的答案,请不要犹豫,发布一个。

以上是关于在新版本的应用程序中替换核心数据模型,无需以前的源代码的主要内容,如果未能解决你的问题,请参考以下文章

如果我上传新版本的应用程序,TestFlight 会删除我以前的构建吗?

安卓手机上的软件,如果把新版本的替换成旧版本的,那么数据还会不会保留?

我的核心数据数据模型中的一个实体没有被删除

如何用应用商店中的新版本替换 iOS 应用中预先填充的核心数据?

核心数据:从旧数据库导入值

核心数据迁移:将关系从一个实体更改为其父实体后的异常