StateRealmObject

@available(iOS 14.0, macOS 11.0, tvOS 14.0, watchOS 7.0, *)
@propertyWrapper
public struct StateRealmObject<T> : DynamicProperty where T : RealmSubscribable, T : ThreadConfined, T : Equatable

用于实例化可观察对象的属性包装器类型。

通过将@StateRealmObject属性应用于属性声明并提供符合doc://com.apple.documentation/documentation的初始值,在SwiftUI/ViewSwiftUI/AppSwiftUI/Scene中创建状态 Realm 对象/Combine/ObservableObject 协议:

@StateRealmObject var model = DataModel()

SwiftUI 仅为声明该对象的结构体的每个实例创建该对象的新实例一次。 当可观察的 Realm 对象的已发布属性发生变化时,SwiftUI 会更新任何视图中依赖于这些属性的部分。如果非托管,则将从对象本身读取属性,否则将从底层 Realm 读取。 对该值的更改将异步更新视图:

Text(model.title) // Updates the view any time `title` changes.

您可以将状态对象传递给具有SwiftUI/ObservedRealmObject属性的属性。

使用$操作符获取状态对象属性之一的SwiftUI/Binding 。 如果要创建与对象属性之一的双向连接,请使用绑定。 例如,您可以让SwiftUI/Toggle控制存储在模型中名为isEnabled的布尔值:

Toggle("Enabled", isOn: $model.isEnabled)

这会将修改后的isEnabled属性写入model对象的 Realm。