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
観察可能なオブジェクトをインスタンス化するプロパティ ラッパー型。
プロパティ宣言にSwiftUI/View
SwiftUI/App
SwiftUI/Scene
@StateRealmObject
属性を適用し、 doc: /Combin/ObservableObjectプロトコル:
@StateRealmObject var model = DataModel()
SwiftUI では、オブジェクトを宣言する構造体の各インスタンスに対して 1 回だけオブジェクトの新しいインスタンスが作成されます。 観察可能な Realm オブジェクトの公開プロパティが変更されると、SwiftUI はそれらのプロパティに依存するビューの部分を更新します。 管理されていない場合、プロパティはオブジェクト自体から読み取られます。それ以外の場合は、基礎となる Realm から読み取られます。 値を変更すると、ビューは非同期に更新されます。
Text(model.title) // Updates the view any time `title` changes.
状態オブジェクトは、 SwiftUI/ObservedRealmObject
属性を持つプロパティに渡すことができます。
$
演算子を使用して、状態オブジェクトのプロパティの 1 つにSwiftUI/Binding
を取得します。 オブジェクトのプロパティの 1 つへの双方向接続を作成する場合は、バインディングを使用します。 たとえば、 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