确保核心数据在整个开发周期中持续存在的最佳实践

时间:2015-03-20 18:23:34

标签: ios xcode core-data

我正在开发Core Data iOS应用程序。我经历过一些数据库与模型不同步的情况,主要是由于我的错误(偶然编辑活动xcdatamodel而不是创建新版本)。这导致了测试人员更新到糟糕版本并体验应用程序崩溃的数据丢失。目前,我知道如何从这些崩溃中恢复的唯一方法是删除并重新安装该应用程序。

确保我的beta测试人员的数据永远不会再次丢失的最佳做法是什么?目前我正在做以下事情:

  
      
  • 版本化我的XCDatamodel(编辑器 - >添加模型版本)
  •   
  • 启用自动迁移功能:
  •   
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
                             [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
                             [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];

更有经验的核心数据开发人员还积累了哪些其他技巧?有没有一种很好的方法可以从核心数据模型中恢复不同步的情况?

1 个答案:

答案 0 :(得分:2)

每次更改模型时创建新模型版本就像您避免此类问题一样。我不知道如何让Xcode或其他工具强制执行。您需要确保不对现有数据模型版本进行更改。在提交git(或者你使用的任何东西)之前,要密切关注哪些文件被更改。

您需要做的另一件事是确保使用与Beta用户相同类型的升级来测试新版本。您正在进行更改并且一切正常,但在推送新版本之前,请先使用与您的测试版测试人员将使用的数据类似的数据,然后再将其升级到新版本。如果任何模型问题不匹配,您将遇到它,并且您可以在发送新版本之前修复它。最简单的方法通常是:

  1. 从您的设备中删除应用
  2. 安装最新的beta版本并创建一些数据
  3. 安装新版本并确保升级按预期工作。
  4. 测试升级过程对于任何新版本的应用程序(无论是测试版还是发行版)都至关重要,这样您就可以在用户使用之前找到升级问题。