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/AppSwiftUI/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 に書込まれます。