SwiftData报错:Schema.Relationship.Option无cascade成员,级联删除无法设置
SwiftData 级联删除的正确实现方式
你提到的Relationship(.cascade)写法已被调整,Apple在SwiftData的迭代中更新了API,现在需要通过@Relationship的deleteRule参数配置级联删除逻辑。
正确代码示例
首先确保关联的MyCustomObject也是@Model类型:
@Model class MyCustomObject { // 定义你的属性 }
然后修改MyThing模型,给关联属性指定级联删除规则:
@Model class MyThing { var name: String @Relationship(deleteRule: .cascade) var myObject: MyCustomObject // SwiftData要求必须显式添加初始化方法 init(name: String, myObject: MyCustomObject) { self.name = name self.myObject = myObject } }
关键说明
- 配置
deleteRule: .cascade后,删除MyThing实例时,关联的MyCustomObject会被自动级联删除。 - 如果
MyCustomObject同时被其他@Model对象关联,级联删除可能无法生效(存在其他强引用),需根据业务场景调整其他关联的删除规则。
内容的提问来源于stack exchange,提问作者Nerdy Bunz
相关产品推荐
相关产品推荐

