在核心数据中建立关系

时间:2014-03-06 12:20:38

标签: ios core-data magicalrecord

我有玩家实体和游戏实体。

许多游戏关系中的一个玩家。

所以玩家有位置属性

  • 罪行
  • 防御

当我创建球员并将此球员添加到球队时,我设置位置进攻或防守。

但是对于不同的游戏,玩家可以拥有进攻位置或防守位置,并且不能为球队中的球员覆盖此位置。因此,如果我创建了具有位置进攻的10号球员,则无法修改,因为球队中的每个球员都有适当的位置。但是对于游戏,我们可以根据需要为玩家设置新的位置。因此假设对于id = 10的游戏我有id = 7的玩家有位置=进攻,但是我希望玩家id = 7的玩家对id = 12的游戏有位置防御。

对于id为10的游戏,我们会对玩家进行攻击

Game
id = 10
player.id = 7
player.position = offense

对于id为12的游戏,我们为同一个玩家提供了位置防御

Game
id = 12
player.id = 7
player.position = defense

所以你可以看到我使用不同的游戏,但使用相同的玩家,如果我将新的参数设置为player.position我将覆盖以前的值,这是不好的,因为它将存储最新的位置,当我将获取玩家我将有最后修改位置的球员。

我想这是以下一种方式:

我有玩家实体,所以为了在短号游戏中为每个玩家制作不同的位置,我必须复制这个实体并设置我想要的位置,但那里的问题是我会重复玩家并且它不好,因为更好的方法是为每个游戏使用相同的玩家(一个玩家)并拥有另一个对象来保存混凝土游戏的具体游戏参数。

有意义吗?或许我需要另一种方法来解决这个问题。在任何情况下,我认为没有重复播放器的最好方法。

1 个答案:

答案 0 :(得分:1)

我对这些案例的解决方案应该是这样的

Game
id = 10
player.id = 7
playerSkill.position = offense
playerSkill.idPlayer = 7 
playerSkill.speed = 9

Player
id
name
nationality
...

PlayerSkill
position
idPlayer
speed
....

因此,每个游戏都有一个拥有技能的玩家,你可以为同一个玩家创造新游戏并创造新技能