核心数据建议将现有实体置于现有实体中

Posted

技术标签:

【中文标题】核心数据建议将现有实体置于现有实体中【英文标题】:Core data advise placing existing entity inside existing entity 【发布时间】:2013-11-17 23:11:38 【问题描述】:

寻找一些建议和指示。我正在创建一个卡片应用程序。像***王牌一样,有不同的套牌。在核心数据中,我有三个实体:

玩家 ->> 套牌 ->> 卡片

我想做的是在应用加载时创建 30 张卡片。然后是玩家。然后玩家从 30 张牌中创建一副牌。用户只能选择其中的 11 张卡片。所以我的问题是,我如何将现有的卡片实体分配给套牌?

【问题讨论】:

您是否在 Deck 和 Card Entity 之间建立了 Core Data 关系? 是的,我有上面提到的与许多牌组相关的玩家。你认为我应该将卡片直接链接到玩家吗?我在想有一个默认的甲板。当游戏开始时,玩家会得到一个 In play 套牌。我真的想知道的是,如果我创建一个新牌组,如何在不创建新实体的情况下添加现有卡片实体?如果你明白我的意思。例如,如果默认牌组中存在黑桃 A,我可以使用核心数据方法在 InPlay 牌组中复制或访问此牌 发布到目前为止您尝试过的任何代码,但您应该执行类似 [deck addCardsObject:card] 的操作。这会将卡片添加到该关系中,这样卡片就会被deck.Cards返回 啊,是的,所以基本上我会从默认卡组中保留我想要的卡并将它们添加到 inPlayDeck 中?我还没有尝试过,但我只是在寻找最好的方法。我已经建立了数据模型并创建了卡片组等 根据我的评论创建了一个答案。如果它对您有帮助,请随时接受它作为正确答案。谢谢! 【参考方案1】:

要填充 To-Many 关系,在您的情况下是 Deck to Cards,您将使用 [deck addCardsObject:card]。这会将 Card 对象添加到关系中,以便它们将由 deck.Cards 返回,而牌组将由 card.Deck 返回。这就是您如何将卡片对象与牌组相关联的方法。在创建新牌组时,您可能希望从“默认牌组”中复制所需的牌,以便您的默认牌组包含所有可能的牌,并且新牌组可以包含这些牌的子集,而不会干扰牌与默认牌的原始关系甲板。

【讨论】:

谢谢。我知道如何做到这一点,但这是我真正追求的最佳实践的建议。我想知道是否有其他方法,而不是复制 inPlay 甲板的实体。我想唯一的另一种方法是在游戏级别的代码中创建玩家数组和计算机数组。还是谢谢。

以上是关于核心数据建议将现有实体置于现有实体中的主要内容,如果未能解决你的问题,请参考以下文章

在新版本中添加现有实体的新属性时核心数据崩溃

如何替换核心数据实体的现有记录

核心数据 - 编辑、递增和保存属性到现有实体

如何创建从一个实体到另一个现有实体的核心数据关系?

新的核心数据实体与现有实体相同:单独的实体或其他解决方案?

自定义核心数据映射:在现有关系之间插入新实体