核心数据,无反向关系

时间:2016-03-07 23:32:44

标签: ios core-data migration warnings

我正努力摆脱表单代码库中的一堆警告:

Entity.relationship should have an inverse.

一般来说,尽管我们的代码没有通过这些反转来实现,但听起来无论如何都将它们放在一起是个好主意。

我的问题是如何做到这一点。

  1. 我应该通过轻量级迁移进行这些更改吗?也就是说,我应该创建另一个xcdatamodel吗?

  2. 对于给定的数据模型,如果我们已经有多个版本/迁移该怎么办?例如,假设我们有ReportsDataModel。在其下面是ReportsDataModel1,ReportsDataModel2和ReportsDataModel3。似乎XCode 7在每个数据模型上给出了相同的警告。因此,如果我在轻量级迁移到ReportsDataModel4中修复它们,似乎它不会摆脱之前的警告。

  3. 解决此问题的推荐方法是什么?

    -Arjun

1 个答案:

答案 0 :(得分:3)

首先,你应该实现反向关系,因为Xcode需要它们。这是一个很好的数据库实践,如果你不使用它们,你几乎可以忽略多余的关系。

是的,您应该能够执行轻量级迁移,即创建新的数据模型并让Xcode推断更改。 Here, Apple states轻量级迁移支持添加关系。

关于你的第二个问题,是的,创建另一个数据模型实际上并不能解决旧版本中的警告问题。您必须将旧模型保留在Xcode中,以便它可以计算轻量级迁移过程。如果从使用该模型的旧版本中删除模型和用户更新,则其数据将被破坏。 (但是,如果您尚未发布具有特定数据模型的应用程序版本,则可以删除该数据模型。)

但是,您可以尝试suppressing the inverse relationship warning entirely

  1. 在Xcode中,单击您的项目文件。
  2. 点击Build Settings标签。
  3. 搜索MOMC
  4. Suppress momc warnings on missing inverse relationships设为是。
  5. 编辑关于仅删除旧模型上的警告:This question建议您可以将旧数据模型移出Xcode并将其放在其他位置,并添加复制文件构建阶段的操作,以便在编译时将文件复制回来。通过这种方式,文件及其无关的警告可能会让您失望。对不起,没有一个“hacky”解决方案。