实体属性的类型已更改。如何迁移?

时间:2012-11-28 10:51:28

标签: ios core-data migration

我添加了新版本的数据模型,并将一个属性从double更改为float。 我真的必须创建迁移映射吗?

所以现在我被卡住了。

我发现有关使用NSMappingModels(和XCode 3)迁移到新数据模型的Apple文档,但我不知道如果只是属性类型发生了变化,是否真的有必要。

更新我的应用程序后,我从persistentStoreCoordinator获取了错误信息:

  

无法打开持久存储:错误域= NSCocoaErrorDomain代码= 134130“操作无法完成。

如果仅更改了属性类型,是否有一种简单的方法(howto / tutorial)进行迁移?删除应用程序不是解决方案,已经部署了第一个版本。

谢谢, 克里斯

2 个答案:

答案 0 :(得分:1)

根据lighweight migration rules,我认为您无法自动执行此操作。您必须创建一个NSMappingModel,在创建期间选择它上面的旧版本和新版本。它将自动为您的所有属性和关系创建迁移,但您更改的属性除外。

对于包含该属性的模型,您必须创建NSEntityMigrationPolicy的子类并告诉您的NSMappingModel使用它(单击NSMappingModel中的实体,并在屏幕右侧的检查器中将其设置为“自定义策略” “field。对于该特定属性,在NSEntityMigrationPolicy的子类中创建一个方法并在那里执行转换。

答案 1 :(得分:-1)

您必须遵循轻量级迁移的说明,描述here。 (还有一个指向迁移指南的链接。)

真的很容易!简而言之:

  • 创建数据模型的新版本
  • 选择它作为活动的
  • 更改属性
  • 运行。