我现在已经在研究Core Data了很多,现在我决定是时候在我正在做的新项目中使用它了。

从未在工作项目中使用过它,所以我遇到了一些我想获得社区反馈的问题。

我正在做一个基于位置的应用程序,我想在“核心数据”模型中存储“郊游”,所以对于每次旅行,我都有一些传统信息,例如日期,距离,描述等。但是我还需要保存位置我需要在 map 上绘制一些点的信息。

因此,每次旅行我都有一个“到”和“从”对象,因此我创建了一个具有纬度,经度和位置名称属性的MapPoint实体。在我的Trip实体上,我添加了一个“到”和一个“来自”关系,其目的地是MapPoint。

但是我如何处理逆属性?

因为Xcode似乎发出警告,所以我将其保留为“No inverse”。

我需要在MapPoint上创建2个关系以引用Trip到“目的地”的关系,以及另一个引用Trip的“from”关系的关系。

这样对吗 ?我不太明白

我在其他几个实体中使用的用户实体也有类似的问题,我是否应该向使用用户的每个实体实现反向关系?

为了让Xcode开心,我似乎需要在User上创建一个与Trip相关的关系,并回到我正在使用的其他实体上,例如Upload,Picture实体等。对象,然后准备链接回上载/照片...与该Trip无关。

最佳答案

如果要支持tofrom关系的逆关系,则只需将适当的关系添加到MapPoint实体。称它们为tripTotripFrom或任何您认为合适的名称,并将它们分别设置为tofrom关系的逆向关系。

正如文档所解释的,您不需要在两个方向上都建立关系模型,但是这样做可以使生活更轻松。例如,当删除用户时会发生什么?如果您还有许多其他与用户相关的实体,则需要某种方法来找出哪些对象与该用户相关,以便您可以对其进行更新。如果您有逆向关系,Core Data可以使用您选择的删除规则(例如nullify)自动更新任何相关对象。如果没有逆向关系,则由您来修复所有相关对象。

09-30 16:04
查看更多