回答
有几个类型的迁移。最简单的方法是使用推断的映射模型进行轻量级迁移 - 这意味着您只需告诉它进行迁移,然后软件即可处理剩余的迁移。但要注意的是,它只能应付某些种类的变化。添加一个实体应该没问题。
要启用轻量级迁移,你需要打开你的持久化存储时,在几个选项传递:
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中,在边栏中选择您的数据模型,从编辑器菜单中选择添加模型版本,并命名您的新版本。然后,您需要将新版本设置为活动版本:再次从左侧边栏选择主数据模型文件,然后在右侧边栏第一个选项卡中,应该有一个“Versioned Data Model”弹出式菜单。
这是非常重要的。要进行迁移,Core Data需要创建旧商店的模型版本以及要迁移到的版本。如果您没有旧版本,迁移将失败。
更改模型是一项艰巨的任务。从理论上讲,只需添加一个实体应该很容易,但Apple为该任务构建了一个迁移工具。 (这是在你改变现有数据的结构的情况下)
我已经迁移了Core Data数据库,但是在MAC OS上它已经在2年前。
这里是引导
谢谢你。看起来非常可怕。如果我可以从开始设置实体并将其填充到更高版本中,可能会更好。他们是视频播放列表,但我不知道现阶段的标题。 – Jorgen
是的,我确定我的第一次迁移是我的最后一次:) ...(除非有任何不可预见的数据需求) –
- 1. 将属性添加到核心数据实体
- 2. 如何将此数组加载到核心数据实体?
- 3. 与核心数据实体
- 4. 发送核心数据实体到FireBase?
- 5. 如何查看已添加到核心数据中的实体的数据
- 6. 将行添加到tableview以添加行和核心数据
- 7. 添加对核心数据的实体引用
- 8. iphone - 添加新的实体核心数据模型?
- 9. 实体框架核心1.1内存数据库失败添加新实体
- 10. 核心数据关系 - 两个实体到一个实体
- 11. 核心数据保存和加载到多个实体
- 12. 核心数据 - 将关系复制到新实体?
- 13. 在实体框架核心中添加实体图
- 14. 添加一个新的记录编程到可可核心数据实体
- 15. ios核心数据 - 将实体记录复制到另一实体
- 16. 核心数据实体命名约定
- 17. 核心数据:的keyPath名在实体
- 18. 核心数据:获取所有实体
- 19. 核心数据[实体长度]:
- 20. UIManagedDocument - 验证核心数据实体
- 21. iPhone核心数据实体查找
- 22. 核心数据中间实体
- 23. 核心数据和图像实体
- 24. 编辑核心数据中的实体
- 25. 核心数据 - 多个实体
- 26. IOS /核心数据:从实体
- 27. 核心数据实体未更新
- 28. iPhone核心数据丢失实体
- 29. 核心数据和许多实体
- 30. 核心数据动态实体
谢谢Amorya。我有一个应用程序,我需要在稍后阶段添加一个实体。它目前没有版本,但如果我理解你是对的,我应该在添加实体时添加一个版本。 – Jorgen