如何抑制无反关系的警告?

Posted

技术标签:

【中文标题】如何抑制无反关系的警告?【英文标题】:How to suppress warning of no inverse relationship? 【发布时间】:2016-10-21 06:13:35 【问题描述】:

我想禁止以下警告:

Entity.detail 应该有一个逆向

Entity.detail 没有倒数;这是高级设置 (没有对象可以位于特定的多个目的地 关系)

我已尝试将以下所有值更改为是,但不起作用:

我正在使用 XCode 8。

有人知道吗?

【问题讨论】:

对不起,我应该在项目的构建设置上编辑它,而不是目标的构建设置.. 这将有助于解释您所处的非常不寻常(并且非常难以纠正)的情况,这种情况要求您没有反向关系,以及您为解决问题所做的工作配置会产生许多一致性问题。 @RobNapier 我需要存储 CLLocationCoordinate2D。实体 Vehicle 可以将位置作为 CLLocationCoordinate2D,而实体 VehicleRoute 可以将 CLLocationCoordinate2D 数组作为其路径。为什么我需要这些的倒数? @BangOperator 为了在使用数据库后端时保持数据库完整性。 Core Data 依赖反向关系来正确管理删除。没有它们,您必须手动管理删除,如果不是很小心,您可能会损坏后备数据库。请注意,根据我的经验,存储大量坐标并不能很好地映射到持久对象图。它通常看起来更像是一个数据库问题,对于该部分,使用数据库而不是 Core Data(它是一个持久对象图,而不是数据库)可能会做得更好。 几个可能有用的链接:***.com/a/7375798/97337cocoawithlove.com/2010/02/… 【参考方案1】:

对于任何想知道未来的人,@Rendy 在他对这个问题的第一条评论中是正确的。解决方案是转到项目构建设置(在导航侧栏中单击您的项目名称,如下所示),然后将“Suppress momc warnings on missing inverse relationships”的设置更改为“是”(如下图)

【讨论】:

非常感谢,这个警告在 99% 的情况下都不是真的,太烦人了!【参考方案2】:

您不会抑制它——您可以通过添加反向关系来修复它。编译器试图告诉你你做错了什么。正确的反应是改正你做错的事情。

【讨论】:

我需要存储 CLLocationCoordinate2D。实体 Vehicle 可以将位置作为 CLLocationCoordinate2D,而实体 VehicleRoute 可以将 CLLocationCoordinate2D 数组作为其路径。为什么我需要这些的逆?我该如何解决这个问题? 您将添加反向关系,因为 Core Data 使用它们来维护数据完整性。根据您的描述,您最好将位置数据保存为属性而不是单独的实体,后者不需要关系。 “最好将位置数据保存为属性”,是的,我可以为“车辆”做到这一点。所以“Vehicle”现在可以有两个新属性“lat”和“long”。但是如何为具有“lat”和“long”数组的“VehicleRoute”实体建模呢?我确实需要一个单独的实体来处理这个关系。 您可以使用可转换的属性。 严格来说这不是真的。它明确表示,“这是一个高级设置”。这意味着它受到支持但不鼓励(因此它是警告而不是错误)。

以上是关于如何抑制无反关系的警告?的主要内容,如果未能解决你的问题,请参考以下文章

如何抑制 StyleCop 警告?

如何抑制 LLVM 自动合成警告?

如何在 Kotlin 中抑制检查式警告

如何抑制蜂巢警告

如何抑制更新链接警告?

如何使用 Intellij SonarLint 插件抑制特定方法的警告