gpt4 book ai didi

swift - 核心数据 : Transformable Type or To-Many Relationship?

转载 作者:行者123 更新时间:2023-12-04 08:09:22 26 4
gpt4 key购买 nike

我是一个菜鸟,很难将我的头脑围绕在核心数据上。
我创建了一个可以很好地保存到文件管理器的应用程序,但是由于其中包含大量数据而变慢。我想将其升级到核心数据。
我已经成功地从我的基本类中创建了一些实体,这些实体保持得很好,但是当我有一个类将其他类的属性作为数组时,我不确定将它保存在核心数据中的方向。
简单示例:

class Student {
let name: String
let markbook: [Markbook]
}

class Markbook {
let name: String
let components: [MarkbookComponent]
}
每个学生实例都应该有自己的标记簿,每个标记簿都有多个标记簿组件,可以更新单个学生的分数。
对于我的核心数据 Student 实体,正确的方法是什么:我是制作 Markbook 可转换类型来实现 Markbook 数组,还是制作一个与 Student 具有一对多关系的 Markbook 实体?这种对多关系是否会给每个学生自己的个人评分簿?

最佳答案

使用关系;你的问题是它们的发明目的。
(虽然可以使用可转换属性来表示对象数组:

  • 不可能有其他数组 NSManagedObjects (CoreData 感到困惑);
  • 你必须自己维护或计算逆关系(在你的例子中,如果你有一个 Markbook 并且想知道它与哪个 Student 相关,你必须扫描所有 Student 对象来定位它。如果在CoreData中创建逆关系,将由CoreData免费填充和管理);和
  • 不能“检查”可转换属性作为提取请求谓词的一部分。因此,如果您想获取所有 MarkbooksMarkbookComponent标题为“英语”,您必须获取所有 Markbooks首先,然后在内存中过滤它们。)

  • 至于关系的基数,如果每个 Student最多可以有一个 Markbook ,那么该关系可以是“一对一”的(并且将在类中定义为类型 Markbook 而不是数组 [Markbook] 的属性)。假设每个 Markbook同样只涉及一个 Student ,逆关系也将是“一对一”。
    每个 Markbook可以有多个 MarkbookComponent ,将关系建模为“对多”(然后将在类中定义为一组 Markbooks)。我不确定您的描述是否是 MarkbookComponent只能涉及一个 Markbook ,或多于一:视情况将逆关系建模为“一对一”或“一对多”。

    关于swift - 核心数据 : Transformable Type or To-Many Relationship?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66056212/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com