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 有关系)
雷达动画在我的应用程序中,我有不同的块来显示信息。
这就是为什么我有实体RadarAnimation
和SatelliteAnimation
,以便按类型识别这些集团。
无论如何,我的问题是我想在 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?