我最近成功完成了一个核心数据“轻量级迁移”;但我注意到这需要我做一些事情——我想知道触发自动迁移所需的绝对最小值是多少?
我并不是说“哪些数据更改需要迁移,否则你会崩溃”,这写在几个地方 - 而是:
“这里列出了您至少必须做的事情,才能让 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 中的选项有多重要?如果我不更改它们 - 或者 - 如果我只更改一个,应用程序是否仍能正确迁移?
谢谢