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/View
、 SwiftUI/App
或SwiftUI/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。
-
为给定的线程限制类型初始化 RealmState 结构体。
声明
Swift
@available(iOS 14.0, macOS 11.0, tvOS 14.0, watchOS 7.0, *) public init<Value>(wrappedValue: T) where T == List<Value>, Value : RealmCollectionValue
-
为给定的线程限制类型初始化 RealmState 结构体。
声明
Swift
@available(iOS 14.0, macOS 11.0, tvOS 14.0, watchOS 7.0, *) public init<Key, Value>(wrappedValue: T) where T == Map<Key, Value>, Key : _MapKey, Value : RealmCollectionValue
-
为给定的线程限制类型初始化 RealmState 结构体。
声明
Swift
@available(iOS 14.0, macOS 11.0, tvOS 14.0, watchOS 7.0, *) public init(wrappedValue: T) where T : ObjectKeyIdentifiable