核心数据轻量级迁移:触发它需要什么?

时间:2012-05-18 18:07:01

标签: sqlite core-data ios5 migration

我最近成功完成了核心数据"轻量级迁移&#34 ;;但是我已经注意到这对我来说需要一点点充实 - 而且我想知道触发自动迁移所需的绝对最小值是什么?

我的意思并不代表什么数据更改需要迁移,否则您会崩溃"这些内容会写在几个地方 - 而是:

"这里列出了您必须至少做的事情,以便为您迁移Core Data"。

(FWIW - 以下是我所做的事情。有些看起来绝对必要,有些可能不是 - 想知道哪些是哪个?):

  • 编辑 - >添加模型版本(命名并保存)
  • Utility Inspector - >版本化核心数据模型:选择我最新的模型版本为"当前"
  • 将我的新表格添加到最新的核心数据模型
  • 编辑 - >创建新的NSManagedObject子类...
  • 因为我使用了mogenerator - 我用它来创建人类和机器文件(经过一些配置使它指向上面创建的新模型文件,隐藏在.xcdatamodeld包内),将它们与在中创建的文件交换上面的步骤(如果您正在进行核心数据,则生成器是一个实时保护程序)
  • 在我的应用程序的info.plist中,我修改了" Bundle Version String,简称" AND"捆绑版本"增量。
  • 向我的persistentStoreCoordinator初始化方法添加了必要的选项NSDictionary([__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:optionsDict error:& error])

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

然后我运行了我的新应用程序超过以前的版本,并且检查了,确定,迁移工作正常并且都很好......但是这很多步骤 - 但是,所以它看起来像是最低要求。

但是,例如,信息播放器中的选项有多重要?如果我不改变它们 - 或者 - 如果我只更改一个,那么应用程序是否仍会正确迁移?

由于

1 个答案:

答案 0 :(得分:2)

  • 编辑 - >添加模型版本(命名并保存)
  • Utility Inspector - > Versioned核心数据模型:选择我最新的模型版本为“当前”
  • 向我的persistentStoreCoordinator初始化方法添加了必要的选项NSDictionary([__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:optionsDict error:& error])

只需要你。