我有一个LIVE应用程序,我想更改核心数据库。
我正在处理迁移错误并阅读几个问题和答案,但我想问以下问题:
进行此更改的正确顺序步骤是什么?
在我的情况下,我只想将属性添加到单个表中,但是从哪里开始,有几个步骤是什么? 例如,我首先创建一个新版本的xcdatamodel? 添加属性并创建新的.h和.m文件或替换现有文件? 我是否需要在核心数据模型上填充标识符(当前模型未填充)?
非常感谢。 问候, 马力
答案 0 :(得分:2)
这对我有用(改编自Pro Core Data for iOS,Apress)。这假设您只是向表中添加属性。迁移步骤不适用于某些更复杂的模型更改。
准备新模型......
...迁移
您需要告诉Xcode自动处理此迁移,只要迁移符合您所称的轻量级迁移,它就可以执行此迁移。
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"CoreDataTest.sqlite"];
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES],
NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES],
NSInferMappingModelAutomaticallyOption, nil];
NSError *error = nil;
然后在调用addPersistentStoreWithType:configuration:URL:options:error:
的options参数中,用这样的选项替换nil ......
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:storeURL
options:options
error:&error])
最后一步是更新任何受影响的NSManagedObect子类(如果有的话)。如果对模型的更改很小,则可以更轻松地直接编辑文件。或者您可以选择重新生成文件(选择实体,然后从编辑器菜单中选择CreateNSManagedObject子类...)如果您在.h或.m中添加了自己的代码,则需要确保保存这些首先将文件放在桌面上,重新生成文件,然后将代码小心地复制到新生成的文件中。
构建并运行。