重命名核心数据类

Posted

技术标签:

【中文标题】重命名核心数据类【英文标题】:Renaming Core Data class 【发布时间】:2009-08-29 10:28:57 【问题描述】:

我有一个使用 CoreData 的应用程序。

我之前有一个名为 Marker 的类,它链接到 Core Data 中的 Marker 实体。

我将 Marker 类重命名为 CoreDataMarker。所以我用实体的新类名创建了一个新的 .xcdatamodel 文件。然后我创建了一个 .xcmapingmodel 并选择了旧的和新的 .xcdatamodel 文件,它似乎“自动设置”很好。

但是,当我运行我的应用程序时,它会抱怨:“无法将模型与名为 'Marker' 的两个不同实体合并”。我知道会发生这种情况,但我不知道如何解决。

你知道吗?

提前致谢!

【问题讨论】:

【参考方案1】:

您不需要新的 xcdatamodel。将Marker 实体的实体描述中的“类”字段中的“类”字段更改为CoreDataMarker。这就是所有需要的。实现类信息不需要架构迁移。

【讨论】:

你知道我应该只更新当前的 xcdatamodel 版本还是所有历史版本?【参考方案2】:

并确保只有当前版本的数据模型(最新的 xcdatamodel 文件)包含在目标和映射模型文件中。看起来其他模型文件的放置是根据 xcmapingmodel 文件中的信息自动完成的。

这是不直观的,但这对我有用。

【讨论】:

以上是关于重命名核心数据类的主要内容,如果未能解决你的问题,请参考以下文章

重命名核心数据实体而不丢失数据

核心数据轻量级迁移属性重命名

核心数据:重命名属性而不会对用户及其当前数据产生问题

核心数据:在获取时重命名属性

核心数据:仅添加或重命名一个属性时仍会发生迁移?

核心数据实体重命名