如何使用App Store中的应用程序测试核心数据迁移?

时间:2011-06-01 02:48:19

标签: ios core-data core-data-migration

我们目前在应用商店中有一款应用。它使用Core Data作为其持久性机制。我们准备好了新版本,并且它有一些架构更改。具体来说,我们添加了1个新实体,并为现有实体添加了新属性。根据我的理解和阅读,这是可以发生的最简单的迁移之一。没有字段删除,也没有要更改的关系。数据模型由5个实体组成,完全没有关系。

我们对数据模型进行了版本化,并创建了一个.xcmappingmodel来处理迁移。我们通过在PersistentStoreCoordinator的创建中添加以下选项来处理迁移:

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
                     [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, nil];

目前,我们已使用以下流程成功测试了该团队的多名成员:

  1. 从设备和iTunes中删除该应用的所有测试版本
  2. 转到应用商店并下载当前版本
  3. 对将证明迁移成功的应用程序进行一些更改
  4. 将新二进制文件(使用相同的包标识符签名)拖到iTunes中并同步
  5. 在设备上加载新版本,验证以前版本中所做的更改是否仍然存在,以及应用程序是否崩溃
  6. 我的问题是: 有没有更简单/更好的方法来测试这个?我们担心的是,一旦应用程序出现,没有其他方法可以确保我们的用户获得最佳体验。

2 个答案:

答案 0 :(得分:5)

我一直在为我的应用程序使用Core Data并升级了大约7次,从旧模型迁移到新模型。

每当我准备发布下一个版本时,我总是使用Model Mapping来测试迁移。只要我创建了源模型is matched against corresponding实体的每个实体和属性以及目标模型的属性,我就没有遇到任何问题。

使用您自己的项目文件进行测试与测试分发给客户的已发布项目文件相同,因此您不必担心将旧模型迁移到新模型的测试是否有效。

换句话说,您的项目包的目标(将被存档和提交)与客户下载的目标相同。

我非常有信心,因为我已经使用不同版本的应用程序进行了测试,没有任何问题。

答案 1 :(得分:2)

我希望您在源代码管理系统中管理源代码。如果没有,请尽快开始。 Xcode 4提供内置git,如果你没有,则使用那个。

如果你有旧的源代码,请保留两个不同的目录,1.0版本(现在在商店中)和1.1版本。如果您可以操作将在模拟器中生效的数据,那是理想的。

您将核心数据存储在应用中的文件中,现在它就像/Users/bshirley/Library/Application\ Support/iPhone\ Simulator/4.3.2/Applications/6D18BD0E-70C1-41FB-9BE8-F736CAAA9FFC/Documents/MyApp.sqlite

您可以将其复制到目录中,将其作为资源添加到新应用中,并在每次在SIM /设备上新安装时执行转换。您可以放入任何新格式的旧格式来测试不同的数据集。