我有 Player 实体和 Game 实体。
一个玩家与多个游戏的关系。
所以Player有position属性
- 进攻
- 防守
当我创建球员并将该球员添加到球队时,我会设置位置进攻或防守。
但对于不同的游戏,球员可以有进攻位置或防守位置,并且该位置不能为球队中的球员覆盖。所以如果我用位置进攻创建了 10 号球员,它就不能修改,因为球队中的每个球员都有适当的位置。但是对于游戏,我们可以根据需要为玩家设置新的位置。因此,假设对于 id = 10 的游戏,我有 id = 7 的玩家,位置 = 进攻,但我希望这个玩家 id = 7 的玩家在 id = 12 的游戏中有位置防守。
对于 id 为 10 的游戏,我们有 position offense the player
Game
id = 10
player.id = 7
player.position = offense
对于 id 为 12 的游戏,我们对同一个玩家进行位置防守
Game
id = 12
player.id = 7
player.position = defense
所以正如你所看到的,我使用不同的游戏,但使用相同的玩家,如果我将新参数设置为 player.position,我将覆盖以前的值,这是不好的,因为它只会存储最新的位置,当我获取玩家时,我将拥有最后修改位置的玩家。
我想这是通过下一种方式实现的:
我有玩家实体,所以要在短号游戏中为每个玩家设置不同的位置,我必须复制这个实体并设置我想要的位置,但问题是我会复制玩家并且这不好,因为更好的方法是在每个游戏中使用同一个玩家(一个玩家),并使用另一个对象来为具体玩家保存具体游戏的参数。
有意义吗?或者我可能需要另一种方法来解决这个问题。无论如何,我认为最好的方法是不重复播放器。
最佳答案
我对这些情况的解决方案应该是这样的
Game
id = 10
player.id = 7
playerSkill.position = offense
playerSkill.idPlayer = 7
playerSkill.speed = 9
Player
id
name
nationality
...
PlayerSkill
position
idPlayer
speed
....
因此,每个游戏都会有一个具有其技能的玩家,并且您可以为同一玩家创建新游戏并创建新技能
关于ios - 在 CoreData 中建立关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22224349/