2016-03-07 72 views
1

我的工作在我们的形式的代码库摆脱了一堆警告的:核心数据,没有反向关系

Entity.relationship should have an inverse. 

在一般情况下,尽管我们的代码不会通过这些逆到达,这听起来无论如何,放置它们是一个好主意。

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

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

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

解决此问题的建议方法是什么?

-Arjun

回答

2

首先,你是正确的,你应该实施逆关系,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设置为是。

编辑大约只有老款摆脱警告:This question建议您可以将旧的数据模型搬出的Xcode和其他地方放置它,并添加一个复制文件的操作来构建阶段复制该文件在编译时返回。这种方式文件和它的无关警告可能是你的方式。对不起,没有少一些“哈克”解决方案。

+0

这将是很好的压制个别版本的警告,但我不认为这是可能的。 –

+0

@TomHarrington - 是的,这正是我所希望的:( – anayini

+0

@TomHarrington我编辑我的答案与可能的解决方案来解决这个Xcode的不幸的限制。 – BradzTech