iOS - 如何使用 Core Data 将 2 个实体迁移到 1 个?

Posted

技术标签:

【中文标题】iOS - 如何使用 Core Data 将 2 个实体迁移到 1 个?【英文标题】:iOS - How to migrate 2 Entities into 1 using Core Data? 【发布时间】:2018-01-22 10:16:00 【问题描述】:

在我当前的模型版本中,我有这 4 个实体:

Satellite(与 SatelliteAnimation 有关系)

卫星动画

雷达(与 RadarAnimation 有关系)

雷达动画

在我的应用程序中,我有不同的块来显示信息。

这就是为什么我有实体RadarAnimationSatelliteAnimation,以便按类型识别这些集团。

无论如何,我的问题是我想在 1 中迁移 2 个区块。 而不是拥有 4 个实体,我想拥有:

雷达 卫星 动画

我不再需要这些关系了。

我知道我可以在轻量级迁移过程中重命名实体。

我想做的是:

创建新的数据模型版本 删除 SatelliteAnimation 实体 删除 Satellite 和 SatelliteAnimation 的关系 删除Radar和RadarAnimation的关系 通过 Animations 重命名实体 RadarAnimation 将新的数据模型版本设置为当前模型版本

这种处理我的问题的方式会影响迁移过程吗? 我可以在新的数据模型版本中重命名和删除关系吗?

【问题讨论】:

【参考方案1】:

这应该可以通过自动轻量级迁移来实现。删除实体和关系不需要额外的步骤,这很好。

要重命名某些内容,您将在模型编辑器中使用重命名标识符。创建模型的新版本后,在模型编辑器中选择要重命名的实体。更改其名称,但将重命名标识符设置为旧名称。在您的情况下,将实体名称从RadarAnimation 更改为Animation,但随后还将实体上的重命名标识符设置为RadarAnimation,以便Core Data 知道它曾经被称为什么。

顺便说一下,属性和关系也可以有重命名标识符,所以它们也可以这样重命名。

Apple 提供了detailed documentation on what can be done with lightweight migration,这可能会对您有所帮助。

【讨论】:

清晰准确的答案。 +1

以上是关于iOS - 如何使用 Core Data 将 2 个实体迁移到 1 个?的主要内容,如果未能解决你的问题,请参考以下文章

了解如何将 UISearchBar 与 Core Data 一起使用

ios 如何正确使用 NSPredicate 来匹配 Core Data 的 NSString?

iPhone 4 iOS 5 如何使用 Core Data 保存 MPMediaItem?

我在哪里使用 Core Data 将业务逻辑放在 IOS 应用程序中?

如何将一个 Core Data 模型迁移到一个全新的模型?

如何使用 Core Data 和 iOS 5 存储指南?