我如何在 Core Data 中为球队、比赛和主客场球队关系建模?
Posted
技术标签:
【中文标题】我如何在 Core Data 中为球队、比赛和主客场球队关系建模?【英文标题】:How do I model teams, games, and home/away team relationships within Core Data? 【发布时间】:2011-09-04 06:21:37 【问题描述】:我正在尝试使用 Core Data 来表示体育联盟的赛程。在我的模型中,我有一个名为 Team 的实体和一个名为 Game 的实体。每支球队都会有很多场比赛。每场比赛将有两支球队,一支被确定为主队,另一支被确定为客队。
在我目前的方法中,我在 Game 实体中定义了“homeTeam”和“awayTeam”关系。这些关系中的每一个都是一对一的,并且将它们的目的地设置为 Team 实体。我还在 Team 实体中定义了一对多“游戏”关系,其目的地设置为 Game 实体。
这种方法的问题是我无法以任何适当的方式设置反向关系。这将要求 Team/games 关系与 Game/homeTeam 和 Game/awayTeam 关系相反,这是不允许的(据我所知)。我当然可以将这些定义为单向关系,但我开始收到 Xcode 警告,我不确定这是否是一件好事。
我还考虑过从 Game 实体中删除 awayTeam 和 homeTeam 关系,并将其替换为 team 关系。这种关系与 Team 是多对多的,最小值和最大值为 2。但是,这种方法不允许我区分主队和客队,我需要在我的应用程序中做到这一点.
对于在 CoreData 中表示此类关系的最佳方式的任何建议,我将不胜感激。毫无疑问,我可以使用自己的 DB 层自己实现这一点,但我宁愿依赖 CoreData,也不愿在这里提出自己开发的解决方案。
【问题讨论】:
【参考方案1】:我会这样做:
Game
有两个一对一的关系,homeTeam
和 guestTeam
。
Team
有两个一对多关系,homeGames
和 outGames
。 homeGames
的倒数是homeTeam
,outGames
的倒数是guestTeam
。
有道理吗?
【讨论】:
谢谢 Mundi - 我没有想到这一点,它确实有些道理。我对这种方法有一个问题:是否有一种直接的方法来获取团队所有比赛的有序列表?当我为 Team 实体建立一个“游戏”关系时,我计划实施一个获取请求,该请求返回按日期排序的所有游戏。我不确定现在所有游戏都包含一个系列或主场比赛和一个单独的客场比赛系列会有多容易。 最简单的方法是获取所有 homeGames 和 outGames 作为 Game 类型的对象,然后以编程方式使用 date 属性对数组进行排序。对于几十条或更少的记录,这应该不是问题。 谢谢 - 我会试试的。我还在试验一个获取请求,该请求返回与两个表达式中的“任何”匹配的所有游戏。第一个表达式查找与指定为参数的球队匹配的主队,第二个表达式查找匹配的客队。以上是关于我如何在 Core Data 中为球队、比赛和主客场球队关系建模?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Core Data 中为多个对象(相同实体类型)生成数组实例?