iOS - 如何使用核心数据将2个实体迁移为1个?

时间:2018-01-22 10:16:01

标签: ios objective-c core-data migration

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

  • 卫星(与SatelliteAnimation有关系)
  • SatelliteAnimation

  • 雷达(与RadarAnimation有关系)

  • RadarAnimation

在我的应用程序中,我有不同的集团,我可以在其中显示信息。

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

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

  • 雷达
  • 卫星
  • 动画

我不再需要这种关系了。

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

我想做的是:

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

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

1 个答案:

答案 0 :(得分:1)

这应该可以通过自动轻量级迁移实现。删除实体和关系只是没有额外的步骤,所以没关系。

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

Renaming identifier

顺便提一下,属性和关系也可以重命名标识符,因此也可以通过这种方式重命名。

Apple提供detailed documentation on what can be done with lightweight migration,在您完成此操作时可能会有用。