核心数据模型与关系

时间:2016-01-30 04:38:50

标签: ios swift core-data

我一直在为我的应用程序开发核心数据模型。我相信我的最终模型是正确的,但有一些事情我有点困惑。这就是我想做的事情:

  1. 用户为一副牌创建一个名称。
  2. 然后将用户带到另一个输入屏幕,在那里他们输入一个问题和答案,以他们创建的先前名称保存。
  3. 问题和答案都会保持联系,并与他们的名字保持联系。 (每个牌组还可以有多个问答对)
  4. 我所做的是:

    Core data model

    从我所读的in this guide开始,似乎我不需要一个单独的实体来回答问题。我似乎可以在Name实体下创建这两个关系。所以我不确定我是否应该在Name实体下创建问答关系,或者为问题和答案分别设置实体。

1 个答案:

答案 0 :(得分:1)

如果您的第一个实体是一堆问题,您应该将其称为Deck而不是Name

您的第二个实体名称应该是单数,因为每个实体代表一个Card对象。

由于每张卡片都有一个问题和答案,因此您无需使用单独的QuestionAnswer实体对其进行建模。只需存储每张卡的答案及其问题。

enter image description here

至于为什么将问题和答案存储在一个单独的实体中,这是建立一对多关系的唯一有效方式,其中每个牌组都有许多牌(或问题)。

否则,没有直观的方法来表示甲板本身内的(固定的或)可变数量的问题和答案属性。在最坏的情况下,您的Deck最终会看起来像:

extension Deck {
    @NSManaged var name: String
    @NSManaged var question1: String
    @NSManaged var answer1: String
    @NSManaged var question2: String
    @NSManaged var answer2: String
    @NSManaged var question3: String
    @NSManaged var answer3: String
    @NSManaged var question4: String
    @NSManaged var answer4: String
    ...
}