【问题标题】:Core Data - Understanding multiple relationships核心数据——理解多重关系
【发布时间】:2016-01-05 14:46:34
【问题描述】:

我开始学习核心数据。 在使用了一些具有 1 种关系的基本教程(例如 1 位教师 - 20 位学生)之后,我想尝试一些“更大”的东西。

我想创建一个锦标赛应用。这就是我的模型现在的样子:

因此,您可以使用该应用创建球员资料、展览比赛和锦标赛。用户可以查看两个玩家之间的“对决”。例如,玩家“max”与玩家“tony”进行了 25 场表演赛和 8 场锦标赛。

在 SQL 数据库中,我将创建三个表(与上图相同)。但是表匹配会有另一个属性“tournamentID”和 playerIDs。 因此,使用锦标赛 ID,我仍然可以检查它是锦标赛游戏还是展览游戏。

但是核心数据呢?我必须创建哪些关系才能区分展览游戏和锦标赛游戏?

【问题讨论】:

  • 表演赛和锦标赛赛的区别是什么
  • 没有区别。唯一的区别是锦标赛游戏与特定锦标赛相关联。正常的表演赛只是一场没有锦标赛链接的比赛。

标签: ios core-data


【解决方案1】:

您拥有的模型仅适用于两名球员,因此您应该将比赛详细信息 - 球员和进球数转移到链接表中。 这个怎么样?

【讨论】:

  • 添加逆关系;总是。
  • @Mike 对于每场比赛,会有很多 MatchEntries,每个玩家一个
  • 啊,好吧,我知道了!但是,当我想获得玩家 x 与玩家 y 对战的所有游戏时,请求的外观如何?
  • D'oh - 每场比赛只有两名球员!我不知道我为什么想到足球。在这种情况下,我们应该简化模型
  • 我现在无法访问 XCode,但您可以删除 MatchDetails 对象,将 player1ID、player2ID、player1Goals 和 player2Goals 添加到 Match 实体。
【解决方案2】:

如果您可以使用玩家姓名作为 ID,我们可以进一步简化数据模型,以便将“mike”和“tony”存储在 Match 中。

在这种情况下,它变成了使用搜索谓词来匹配玩家 1 和玩家 2 的简单情况

那里有一些很好的教程,包括 www.jamesonquave.com/core-data-in-swift-tutorial-part-2

【讨论】:

  • 我必须设置自定义 ID 吗?我认为核心数据会自动完成。
  • 对象的自定义类怎么样?你怎么看?我应该创建自定义类还是应该使用 let playerName = managedObject.valueForKey("name") 获取所有内容?
  • 我将所有内容加载到与我的实体匹配的类中
  • 那么您创建的类与您的实体相同?
  • 我愿意,然后我可以直接将数据从数据库加载到实体中。如果有任何其他属性是派生的但没有存储,我会同时填充它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-30
  • 1970-01-01
  • 2011-02-18
  • 2016-09-08
  • 2014-08-13
  • 1970-01-01
相关资源
最近更新 更多