我们有一个使用核心数据的应用程序。
在下一个版本中,我想向现有实体添加一个新实体。
只需添加新的然后从软件中填充它就可以了吗?还是有什么我必须考虑的事情?
迁移有几种类型。最简单的是使用推断映射模型的轻量级迁移 - 这意味着您只需告诉它进行迁移,软件就会处理其余的事情。然而,需要注意的是它只能应对某些类型的变化。添加一个实体应该就可以了。
要启用轻量级迁移,您需要在打开持久存储时传入一些选项:
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();
}
最后要做的一件事是在更改数据模型时,您需要添加模型版本。在 Xcode 4 中,在侧边栏中选择您的数据模型,从编辑器菜单中选择添加模型版本,然后命名您的新版本。然后,您需要将新版本设置为活动版本:再次从左侧边栏中选择主数据模型文件,然后在右侧边栏中的第一个选项卡中,应该有一个“版本化数据模型”弹出菜单。
这个非常重要。要进行迁移,Core Data 需要创建旧存储所用的模型版本以及您想要迁移到的版本。如果您没有旧版本,迁移将会失败。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)