应用程序更新时的 iPhone 数据迁移

标签 iphone data-migration app-store

我正在开发一个 iPhone 应用程序,它使用 sqlite 来存储应用程序和用户数据。

这是该应用程序的第一个版本,我想知道我需要做什么来为该应用程序的 future 版本做好准备。

这够了吗? 1. 确保 XCode 项目设置中的应用程序版本正确 2.在sqlite文件中添加版本号,以便以后读取

让我们模拟下一次更新! 1.新版本的应用程序下载到设备上 2.应用程序读取之前存储在sqlite表/字段中的版本号 3.应用程序知道应用程序数据已更改,因此需要更新sqlite并且还 它想要保留用户数据(在应用程序收藏夹和注释中)。 4.架构没有改变,所以它开始将新的应用程序数据插入到一些表中。 5.它不触及用户数据表 6.更新sqlite数据库的版本号。

我是否错过了一些在更新时会回来咬我的东西?

最佳答案

因此,当您开发使用核心数据的应用程序时,您就开始定义核心数据模型。每个模型都有自己的版本。您开始创建模型的第一个且唯一的版本。您可以在 official Apple Core Data Model Versioning and Data Migration Programming Guide 找到所有必需的详细信息。

您不应该通过数据库本身设置的自定义字段来处理数据库版本控制,而是通过 Xcode 项目使用模型版本。

更新应用程序时,如果您不更改模型版本,则无需担心任何事情,因为数据库尚未被触及。每个不改变模型的新更新都不需要您付出任何努力。

如果您需要在下次更新时更新模型,则必须执行以下操作:

  1. 创建新模型版本
  2. 将新模型版本设置为事件版本
  3. 根据您的需要修改模型

有趣的部分来了。您的应用程序将以两种不同的方式处理模型之间的迁移:简单方式和困难方式。

自动轻量级迁移

遵循Apple关于Core Data Model Versioning and Data Migration的官方文档,如果您的模型略有更改,您可以要求应用程序执行自动轻量级迁移。如果满足以下要求,此步骤会将现有数据库更新为新版本:

  1. 简单添加新属性
  2. 非可选属性变为可选
  3. 可选属性变为非可选,并定义默认值

如果可能的话,轻量级迁移过程将处理从一个模型版本迁移到另一个模型版本所需的适当步骤

映射模型迁移

如果您无法执行自动轻量级迁移,则必须手动定义更新步骤 使用 Mapping Model Objects 将模型版本转换为新版本。这些对象将定义应用程序从模型版本 x 迁移到模型版本 y 所需执行的操作。

关于应用程序更新时的 iPhone 数据迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5920195/

相关文章:

entity-framework - EF 代码优先模型是否旨在完整描述数据库的结构?

objective-c - iOS 应用程序崩溃,符号化日志不透明

iphone - IOS - 从应用程序商店安装旧版本的应用程序

ios - 按照 Apple 建议检查 iOS 版本

iphone - XCode 4 中 bundle 显示名称的本地化失败

ios - 删除通知中心的观察者 - "Variable used within its own initial value"

mysql - 将记录从 mysql 数据库中的表复制到 SQL-SERVER 2008 数据库?

iphone - 动画表格 View 部分标题

ios - 为已发布的 iPhone 应用程序迁移 Realm 数据库的步骤

ios - 未从App Store下载时如何更新XCode