0

我对 Objective C 和 Core Data 还很陌生,并且在设计一个玩家一对一合作并进行多场比赛最终得到特定结果的案例时遇到了问题。

使用 MySQL,我将有一个玩家表(玩家主键、名称)和一个匹配表(玩家 A 外键、玩家 B 外键、结果)。

现在我如何使用 Core Data 做到这一点?我可以使用关系轻松地将玩家实体与匹配实体联系起来。但是我如何为第二个玩家参考建模反方向。在匹配实体中?

玩家
姓名:属性
匹配:关系匹配

匹配
结果:属性 PlayerA:与玩家的关系(<- 与 Player.Match 相反)
PlayerB:与玩家的关系(<- 与 ????)

如果有人能给我一个想法,那就太好了!

谢谢,史提夫。

4

1 回答 1

0

如果您的比赛有特定的主队球员和客队球员,那么您将使用:

player.homeMatches <---->> match.homePlayer
player.awayMatches <---->> match.awayPlayer

您可能仍然拥有:

player.matches

如果您需要按所有匹配项进行搜索,并且不想将您的搜索字段合并在一起。或者您可以提供一个方法/只读属性“allMatches”:

- (NSSet *)allMatches
{
    return [[NSMutableSet setWithSet:self.homeMatches] unionSet:self.awayMatches];
}

在运行时给出值。当然,您不能使用 fetch 谓词通过此“allMatches”属性进行搜索,但您可以在运行时进行排序和访问。

于 2009-10-04T08:17:55.203 回答