結果

@frozen
public struct Results<Element> : Equatable, RealmCollectionImpl where Element : RealmCollectionValue
extension Results: RealmSubscribable
extension Results: Encodable where Element: Encodable

Results は、オブジェクト クエリから返される Realm の自動更新コンテナ タイプです。

ResultsList<Element>と同じ述語でクエリできます。また、クエリを連鎖させてクエリ結果をさらにフィルタリングできます。

Results は、現在のスレッドでの書込みトランザクション中など、現在のスレッド上の Realm の現在の状態を常に反映します。 これに対する 1 つの例外は、 for...in列挙を使用する場合です。この列では、列挙が開始されると、列挙中にフィルターによって除外されるようにオブジェクトが削除または変更された場合でも、クエリに一致したオブジェクトが常に列挙されます。

Results は、最初にアクセスされたときに遅延評価されるため、クエリの結果が要求された場合にのみクエリを実行します。 つまり、データのソートやフィルタリングのために一時的なResultsを複数連鎖させても、中間状態を処理する不要な作業は実行されません。

結果が評価されるか、通知ブロックが追加されると、結果は早期に最新状態に維持され、可能な場合は常にバックグラウンド スレッドで最新の状態を維持するための作業が実行されます。

結果インスタンスは、直接インスタンス化することはできません。

  • 結果によって表されるオブジェクトの、人間が判読可能な説明。

    宣言

    Swift

    public var description: String { get }

オブジェクト検索

  • 指定されたindexにあるオブジェクトを返します。

    宣言

    Swift

    public subscript(position: Int) -> Element { get }

    パラメーター

    index

    インデックス。

等価

Flexible Sync

  • 結果のローカル クエリに一致する SyncSubscription を作成します。 サブスクリプションを Realm のローカル サブスクリプションセットにコミットすると、メソッドはWaitForSyncModeに従ってダウンロードを待機します。

    名前のないサブスクライブ

    名前なしで一致するクエリを持つ.subscribe()が名前なしで呼び出された場合、別のサブスクリプションは作成されません。

    名前付きサブスクリプションに一致するクエリを持つ.subscribe()が名前なしで呼び出された場合、名前のない追加のサブスクリプションが作成されます。

    名前付きサブスクリプション

    名前のないサブスクリプションに一致するクエリを持つ名前で.subscribe()が呼び出された場合、追加の名前付きサブスクリプションが作成されます。

    既存の名前とクエリ

    別のクエリで取得される名前で.subscribe()が呼び出された場合、古いサブスクライブは新しいクエリで更新されます。

    同一のクエリですでに使用されている名前で.subscribe()が呼び出される場合、新しいサブスクリプションは作成されません。

    注意

    このメソッドは、 WaitForSyncMode.always.onCreation (サブスクリプションが最初に作成されたとき)が使用されたときに返す前に、すべてのデータがダウンロードされるまで待機します。 タイムアウトが設定されていない場合は、インターネット接続が必要です。

    注意

    このメソッドは、サブスクリプションを作成または更新する更新トランザクションを開きます。 複数のサブスクライブを作成するために、このメソッドをループ処理しないことをお勧めします。 これにより、不要な更新トランザクションが複数発生してパフォーマンスのボトルネックが発生する可能性があります。 複数のサブスクライブを一度に作成するには、 SyncSubscription.updateを使用します。

    警告

    この関数は、メイン スレッドとアクター分離された Realm でのみサポートされています。

    警告

    この API は現在Previewであり、将来変更される可能性があります。

    宣言

    Swift

    @available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
    @_unsafeInheritExecutor
    public func subscribe(name: String? = nil, waitForSync: WaitForSyncMode = .onCreation, timeout: TimeInterval? = nil) async throws -> Results<Element>

    パラメーター

    name

    サブスクライブに適用される名前

    waitForSync

    WaitForSyncMode サブスクライブのダウンロード動作を決定します。 デフォルトは.onCreationです。

    timeout

    任意のクライアント タイムアウト。 この時間が経過すると、クライアントはサブスクリプションのダウンロードの待機をキャンセルします。 このタイムアウトに達しても、サーバー エラーは発生しません。

    戻り値

    self を返します。

  • 結果のローカル フィルターに一致する SyncSubscription を削除します。

    メソッドは、Realm のローカル サブスクリプションセットにサブスクリプションの削除をコミットした後にを返します。 このメソッドを呼び出すと、オブジェクトが Realm から削除されるのを待たなくなります。

    名前付きサブスクリプションを削除するには、結果によって以前にサブスクライブが作成されている必要があります。 例:

    let results1 = try await realm.objects(Dog.self).where { $0.age > 1 }.subscribe(name: "adults")
    let results2 = try await realm.objects(Dog.self).where { $0.age > 1 }.subscribe(name: "overOne")
    let results3 = try await realm.objects(Dog.self).where { $0.age > 1 }.subscribe()
    // This will unsubscribe from the subscription named "overOne". The "adults" and unnamed
    // subscription still remain.
    results2.unsubscribe()
    

    注意

    このメソッドは、サブスクライブを削除する更新トランザクションを開きます。 このメソッドを使用して、サーバーへの複数のサブスクリプションの変更をバッチ処理しないことをお勧めします。 複数のサブスクライブを一度にサブスクライブを解除するには、 SyncSubscription.updateを使用します。

    警告

    結果に対して unsubscribe を呼び出しても、 Resultsからローカル フィルターは削除されません。 unsubscribe を呼び出した後も、Realm のサブスクリプション セットに他のサブスクリプションが存在する可能性があるため、結果にはオブジェクトが含まれる可能性があります。

    警告

    この API は現在Previewであり、将来変更される可能性があります。

    宣言

    Swift

    public func unsubscribe()

結果

  • コレクションが変更されるたびに Vid を発行する出版社。

    名前に関係なく、コレクションが変更されたにこれが実際に発行します。

    宣言

    Swift

    public var objectWillChange: RealmPublishers.WillChange<Results> { get }