一对多关系

温馨提示:本文最后更新于2025-01-19 09:25:33,某些文章具有时效性,若有错误或已失效,请在下方留言

一对多关系是 SwiftData 中最常见的关系类型,当关系的一方有一个数据数组,而另一方是可选时,会自动创建这种关系

例如,我们可以说每个学生属于一个班级,而每个班级有很多学生

@Model class Students {
    var name: String
    var classes: Classes?
    init(name: String, classes: Classes) {
        self.name = name
        self.classes = classes
    }
}

@Model class Classes {
    var name: String
    var students: [Students]
    init(name: String, students: [Students]) {
        self.name = name
        self.students = students
    }
}

如果我们想在 Classes 中显式定义关系,可以使用 @Relationship 属性包装器。我们还可以通过将 deleteRule 参数设置 .nullify,实现当删除一个班级时,自动将学生的班级属性设置为nil

@Relationship(deleteRule: .nullify, inverse: \Students.classes) var studentss: [Students]

1. 如果你打算使用推断的关系,数据的其中一方必须是可选的。
2. 如果你使用显式关系且数据的一方是非可选的,那么在删除对象时要格外小心—SwiftData 默认使用 SwiftData 默认使用. nullify删除规则,这可能会导致数据处于无效状态。为了避免这个问题,可以使用可选值,或使用.cascade删除规则。
3. 不要尝试使用 Array 以外的集合类型,否则代码将无法编译。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容