0

我有 2 个实体,其中共有 12 个属性,其中某些特定类型的字段的最小值、最大值和平均值有 3 种变体。因此,我将 2 个实体重构为 3 个实体,使第 3 个实体成为“值”,其中包含 3 个属性,即最小值、最大值和平均值。并将 12 个属性减少为 4 个关系。这是我的模型的复制品,作为下图中的示例。

在此处输入图像描述

如您所见,我与第三个实体具有一对一的单向关系。但是 Xcode 一直在抱怨“反向”关系。

在此处输入图像描述

根据我的说法,我可以在“值”中添加 4 个关系并将所有关系更新为“反向”,但这似乎不是正确的解决方案,因为当第二个实体与“值”相关联时,它将有额外的 3 个nil 关系,而在第一个情况下,它将有 1 个额外的 nil 关系。这两个都是不必要的。

我相信重构“价值”并将其拆分为两个相似的实体也不是一个好的解决方案。

因此,任何人都可以建议我解决这个问题的正确方法或最佳实践是什么。如果我在描述我的问题时有任何不清楚的地方,请告诉我。

4

2 回答 2

2

根据您的描述,我将撤消重构并返回使用属性而不是关系。您正在增加复杂性而没有真正的好处,并且该Values实体(正如您所发现的那样)太通用而无法真正有用或有意义。这种重构没有任何有用的目的;不要修复它,恢复它。

于 2017-02-15T16:29:56.387 回答
0

您应该查看弱关系(获取的属性)以了解如何正确管理关系以及错误代码的解决方案。

大多数对象关系本质上是双向的。如果一个部门与在该部门工作的员工之间存在一对多关系,则从员工到部门之间存在一对一的反向关系。主要的例外是 fetched 属性,它表示弱的单向关系——从目标到源没有关系。

此外,如果您想让事情变得更简单,您应该考虑(如果可能的话)避免 3 个对象并拥有一个或两个对象,并牢记propertiesToFetchNSFetchRequest通过这种方式,您可以获取您的Entity,将属性保存在一个 中Entity但只获取您想要的属性,并避免获取您不打算使用的属性的开销和内存消耗。

无论哪种方式适合您的需求,您都可以选择。总帐

于 2017-02-15T16:59:33.467 回答