核心数据,无反向关系

ana*_*ini 3 migration warnings core-data ios

我正在努力消除代码库中的一系列警告:

Entity.relationship should have an inverse.
Run Code Online (Sandbox Code Playgroud)

一般来说,虽然我们的代码没有达到这些逆,但听起来无论如何将它们放入是一个好主意。

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

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

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

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

-阿琼

Bra*_*ech 5

首先,您应该实现逆向关系,这是正确的,因为 Xcode 需要它们。这是一种很好的数据库实践,如果您不使用多余的关系,您实际上可以忽略它们。

是的,您应该能够执行轻量级迁移,即创建新的数据模型并让 Xcode 推断更改。在这里,苹果声明轻量级迁移支持添加关系。

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

但是,您可以尝试完全抑制反向关系警告

  1. 在 Xcode 中,单击您的项目文件。
  2. 单击Build Settings选项卡。
  3. 搜索MOMC
  4. 设置Suppress momc warnings on missing inverse relationships为是。

编辑关于仅删除旧模型上的警告:这个问题建议您可以将旧数据模型移出 Xcode 并将其放置在其他位置,然后向构建阶段添加复制文件操作以在编译时将文件复制回来。这样,该文件及其无关的警告可能会妨碍您。抱歉,没有比这更“hacky”的解决方案了。