3

我最近成功完成了一个核心数据“轻量级迁移”;但我注意到这需要我做一些事情——我想知道触发自动迁移所需的绝对最小值是多少?

我并不是说“哪些数据更改需要迁移,否则你会崩溃”,这写在几个地方 - 而是:

“这里列出了您至少必须做的事情,才能让 Core Data 为您迁移”。

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

  • 编辑器 -> 添加模型版本(命名并保存)
  • Utility Inspector -> Versioned Core Data Model:选择我的最新模型版本为“当前”
  • 将我的新表添加到最新的核心数据模型
  • 编辑器 -> 创建新的 NSManagedObject 子类 ...
  • 因为我使用 mogenerator - 我用它来创建人和机器文件(经过一些配置让它指向上面创建的新模型文件,隐藏在 .xcdatamodeld 包中),将这些文件与上面步骤中创建的文件交换(如果你在做核心数据,mogenerator 是一个活生生的救星)
  • 在我的应用程序的 info.plist 中,我将“Bundle Version String,short”和“Bundle Version”向上修改了一个增量。
  • 将必要的选项 NSDictionary 添加到我的 persistentStoreCoordinator 初始化方法( [__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:optionsDict error:&error] )

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

然后,我在以前的版本上运行我的新应用程序,并检查,果然,迁移工作正常,一切都很顺利......但这是很多步骤 - 然而,到目前为止,它看起来确实是最低要求。

但是,例如,info-plist 中的选项有多重要?如果我不更改它们 - 或者 - 如果我只更改一个,应用程序是否仍能正确迁移?

谢谢

4

1 回答 1

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

是你所需要的全部。

于 2012-05-18T18:46:43.420 回答