0

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

所以现在我被困住了。

我找到了有关使用 NSMappingModels(和 XCode 3)迁移到新数据模型的 Apple 文档,但我不知道是否真的有必要更改属性的类型。

更新我的应用程序后,我从persistentStoreCoordinator 收到错误消息:

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

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

谢谢,克里斯

4

2 回答 2

1

根据轻量级迁移规则,我认为您无法自动执行此操作。您必须创建一个 NSMappingModel,在创建过程中选择旧版本和新版本。它将自动为您的所有属性和关系创建迁移,但您更改的属性除外。

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

于 2012-11-29T15:47:15.117 回答
-1

您必须按照此处描述的轻量级迁移说明进行操作。(还有一个指向迁移指南的链接。)

这真的很容易!简而言之:

  • 创建数据模型的新版本,
  • 选择它作为活动的,
  • 改变属性,
  • 跑。
于 2012-11-28T14:44:55.590 回答