SwiftData: Type 'Schema.Relationship.Option' has no member 'cascade'

373 Views Asked by At

We have a Swiftdata model such as:

@Model
class MyThing {

   var name:String

   var myObject: MyCustomObject

   //...

}

In order for "myObject" (which is also an @Model) to automatically get deleted when an instance of MyThing is deleted, we need to add the attribute(?), Relationship(.cascade) to myObject.

This is shown in this tutorial:

enter image description here

... and this Apple video:

enter image description here

But when I try to do it, this happens (there seems to be no option to do it)... and if I manually type it out it says it's not found:

enter image description here

1

There are 1 best solutions below

2
Sweeper On BEST ANSWER

Those resources you found are out of date. There should be an argument label deleteRule:.

@Relationship(deleteRule: .cascade)

See also the signature of the macro in the documentation.

macro Relationship(
    _ options: Schema.Relationship.Option...,
    deleteRule: Schema.Relationship.DeleteRule = .nullify,
    minimumModelCount: Int? = 0,
    maximumModelCount: Int? = 0,
    originalName: String? = nil,
    inverse: AnyKeyPath? = nil,
    hashModifier: String? = nil
)

Without an argument label, the compiler thought .cascade was passed to the options parameter.