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?
-
bind(_:
拡張メソッド) 特定のプロパティに対して
Binding
を作成し、自動的にトランザクションされる読み取りと書込みを可能にします。これは、
Binding
を渡す必要がある SwiftUI ビュー(たとえば、TextField、DatePicker)の便利な方法です。 SwiftUI は バインディングから自動的に読み取り/書き込みを行います。宣言
Swift
public func bind<V>(_ keyPath: ReferenceWritableKeyPath<Self, V>) -> Binding<V>