Jor*_*gen 4 entity core-data ios
我们有一个使用核心数据的应用.在下一个版本中,我想向现有实体添加一个新实体.
可以只添加新的,然后从软件中填充它,还是有什么我需要考虑的?
Amy*_*all 15
有几种类型的迁移.最简单的是使用推断的映射模型进行轻量级迁移 - 这意味着您只是告诉它进行迁移,软件处理其余的.然而,需要注意的是,它只能应对某些变化.添加实体应该没问题.
要启用轻量级迁移,您需要在打开持久性存储时传递一些选项:
NSMutableDictionary *options = [[NSMutableDictionary alloc] init];
[options setObject:[NSNumber numberWithBool:YES] forKey:NSMigratePersistentStoresAutomaticallyOption];
[options setObject:[NSNumber numberWithBool:YES] forKey:NSInferMappingModelAutomaticallyOption];
NSError *error = nil;
__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error])
{
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
Run Code Online (Sandbox Code Playgroud)
最后要做的是在对数据模型进行更改时,需要添加模型版本.在Xcode 4中,选择侧栏中的数据模型,从"编辑器"菜单中选择"添加模型版本",然后命名新版本.然后,您需要将新版本设置为活动版本:再次从左侧边栏选择主数据模型文件,然后在右侧边栏的第一个选项卡中,应该有一个"版本化数据模型"弹出菜单.
这是非常重要的.要进行迁移,Core Data需要创建旧商店的模型版本,以及要迁移到的版本.如果您没有旧版本,迁移将失败.