如何在 CoreData 中对实体之间的相对分数进行建模

Posted

技术标签:

【中文标题】如何在 CoreData 中对实体之间的相对分数进行建模【英文标题】:How do I model relative scores between entities in CoreData 【发布时间】:2010-01-18 00:26:17 【问题描述】:

我是 CoreData 的新手,正在努力找出正确的方法来建模特定关系。我有一个名为“朋友”的实体,具有一些属性,例如“姓名”、“年龄”、“性别”等。

我希望能够对 Friend 的两个实例之间的分数进行建模,但我无法弄清楚最好的方法。

比如3个朋友A、B、C,可能会有这样的分数:

A <-> B: 3
A <-> C: 2
B <-> C: 4

或矩阵形式:

  A B C
A 0 3 2
B 3 0 4
C 2 4 0

我想出的最好的方法是拥有一个具有“值”整数属性的“分数”实体以及与“朋友A”和“朋友B”的两个关系——但如果这是正确的方法,我应该如何建模逆Friend 实体上的关系?

非常感谢您的帮助!

【问题讨论】:

【参考方案1】:

如果没有关于整个设计的更多细节,您对 Score 实体的想法是我能想到的最好的。然而,反比关系很简单。

在 Friend 和 Score 之间创建多对多关系。

在分数方面,您将最小和最大计数设置为 2。

将朋友端设置为无最小值和无最大值。

这是假设好友的顺序相对于分数并不重要。

【讨论】:

感谢马库斯 - 这非常有效。您假设关系中的朋友顺序不重要就我的问题而言是正确的。【参考方案2】:

可以使用您的方法通过从 Friend 到 Score 的两个对多关系(可能称为“scoresA”和“scoresB”)创建逆。

这与 Marcus 建议的有点不同,因为您必须将这两个集合组合起来以获取特定 Friend 的所有 Score 对象(或者如果您想查看特定 Score 对象是否与特定朋友)。

您采用的方法应该是在您的应用程序中更容易使用的方法。然而,马库斯或许能够提供他的方法更好的原因,因为他确实写了一本关于核心数据的书。

【讨论】:

【参考方案3】:

我正在从事一个类似的项目,并且我一直在想一种有趣的方式来实现它,那就是有一个“游戏”实体,它与获胜者具有一对一的关系。

我还没有学习的是如何显示对给定朋友的获胜次数。

【讨论】:

以上是关于如何在 CoreData 中对实体之间的相对分数进行建模的主要内容,如果未能解决你的问题,请参考以下文章

如何像实体框架一样在Core Data的一个类文件中对属于一个实体的方法进行分组?

在 CoreData 中存储排行榜分数?

如何在 Coredata 中的相同实体之间创建多个关系?

如何使用 Core Data 关系?

CoreData 瞬态关系示例

CoreData(IOS)多列的唯一约束?