ThreadConfined

public protocol ThreadConfined

ThreadConfinedに準拠する型のオブジェクトは Realm によって管理されるため、スレッド固有のRealmインスタンスに関連付けられます。 管理対象オブジェクトをスレッド間で渡すには、明示的にエクスポートおよびインポートする必要があります。

このプロトコルに準拠するオブジェクトの管理対象インスタンスは、 ThreadSafeReference(to:)コンストラクターにを渡すことで、スレッド間で転送されるためのスレッドセーフな参照に変換できます。

Realm によって定義された型のみがこのプロトコルに意味のあるものに準拠することができ、それに準拠しようとする新しいクラスを定義しても、 ThreadSafeReferenceでは動作しないことに注意してください。

  • オブジェクトを管理する Realm。オブジェクトが管理されていない場合はnil

    管理されていないオブジェクトはスレッドに制限されず、 ThreadConfinedオブジェクトを必要とするメソッドに渡すことができません。

    宣言

    Swift

    var realm: Realm? { get }
  • オブジェクトが無効になったためアクセスできなくなっているかどうかを示します。

    宣言

    Swift

    var isInvalidated: Bool { get }
  • オブジェクトが固定されているかどうかを示します。

    凍結されたオブジェクトは、ソース スレッドに限定されません。 固定オブジェクトにThreadSafeReferenceを作成することも可能ですが、有用ではない可能性があります。

    宣言

    Swift

    var isFrozen: Bool { get }
  • このオブジェクトの固定スナップショットを返します。

    通常の Realm ライブ オブジェクトとは異なり、固定されたコピーは任意のスレッドから読み取ることができ、読み取られた値は Realm への新しい書込みを反映するように更新されることはありません。 凍結されたコレクションは、他の Realm コレクションと同様にクエリできます。 凍結されたオブジェクトはミューテーションできず、変更通知で監視することもできません。

    管理されていない Realm オブジェクトは固定できません。

    警告

    Realm で書込みトランザクションを実行中に固定されたオブジェクトを長時間保持すると、Realm ファイルのサイズが大きくなる可能性があります。 詳しくは、 Realm.Configuration.maximumNumberOfActiveVersionsを参照してください。

    宣言

    Swift

    func freeze() -> Self
  • このオブジェクトのライブ(可変)参照を返します。 すでに存在するオブジェクトで呼び出される場合は、自分自身を返します。

    宣言

    Swift

    func thaw() -> Self?

Self : ObjectBaseで利用可能

  • bind(_:) 拡張メソッド

    特定のプロパティに対してBindingを作成し、自動的にトランザクションされる読み取りと書込みを可能にします。

    これは、 Bindingを渡す必要がある SwiftUI ビュー(たとえば、TextField、DatePicker)の便利な方法です。 SwiftUI は バインディングから自動的に読み取り/書き込みを行います。

    宣言

    Swift

    public func bind<V>(_ keyPath: ReferenceWritableKeyPath<Self, V>) -> Binding<V>