Projection Changeset

@frozen
public struct ProjectionChangeset<P> : Publisher where P : ProjectionObservable, P : ThreadConfined

Objectchange を発行する出版社監視されたプロジェクションが変更されるたび

receive(on:)subscribe(on:)はこの出版社で直接呼び出せます。 .threadSafeReference()を呼び出す必要があるのは中間変換がある場合のみです。 subscribe(on:)が使用される場合、常にパイプラインの最初の操作になる必要があります。

changesetPublisher()関数を使用してこのパブリックを作成します。

  • この出版社は Projectionchange を発行します

    は、監視対象のプロジェクションを変更する書込みトランザクション後に Realm が更新されるたびに、どのプロジェクションとそのプロジェクションのどのプロパティが変更されたかを示します。

    宣言

    Swift

    public typealias Output = ObjectChange<P>
  • この出版社は、 Projectionchange の.errorの場合、エラーを報告します。

    宣言

    Swift

    public typealias Failure = Never
  • は、Realm コレクションを監視して生成されたNotificationTokenをキャプチャします。

    これにより、 Realm.write(withoutNotifying:)を実行するときに通知スキップが可能になります。 Realm データベースに書き込み、この特定の監視チェーンを無視する必要がある場合は、この呼び出しを使用する必要があります。 NotificationTokenは、 receive(subscriber:)に設定された監視ブロックから指定されたKeyPathに保存されます。

    宣言

    Swift

    public func saveToken<T>(on tokenParent: T, at keyPath: WritableKeyPath<T, NotificationToken?>) -> ProjectionChangesetWithToken<T, P>

    パラメーター

    projection

    NotificationTokenが書き込まれるプロジェクション。

    keyPath

    NotificationTokenが書き込まれる KeyPath 。

    戻り値

    ProjectionChangesetWithToken出版社。

  • サブスクライブ、キャンセル、リクエスト操作を実行するスケジューラーを指定します。

    Realm パブリッシャーの場合、基礎の変更通知がどのキューに送信されるかが決まります。 receive(on:)がその後で使用されない場合は、出版社から受け取ったどのキュー要素が評価されるかも決定されます。 現在はシリアル ディスパッチ キューのみをサポートしており、 options:パラメータはサポートされていません。

    宣言

    Swift

    public func subscribe<S>(on scheduler: S) -> ProjectionChangeset<P> where S : Scheduler

    パラメーター

    scheduler

    サブスクリプションを実行するためのシリアルディスパッチキュー。

    戻り値

    指定されたスケジューラーをサブスクライブする出版社。

  • 下流操作を実行するスケジューラーを指定します。

    これは、自動更新 サイクルとの統合方法がsubscribe(on:)とは異なります。 subscribe(on:)を使用する場合、サブスクライブはターゲット スケジューラーで実行され、パブリックは更新中に コレクションを発行します。 receive(on:)を使用する場合、コレクションはThreadSafeReferenceに変換され、自動更新サイクルに統合されることなくターゲット スケジューラーに配信されます。つまり、更新が発生した後、一定時間にタイムアウトする可能性があります。

    不明なときは、次が必要です subscribe(on:)

    宣言

    Swift

    public func receive<S>(on scheduler: S) -> DeferredHandoverProjectionChangeset<`Self`, P, S> where S : Scheduler

    パラメーター

    scheduler

    値を受信するシリアル ディスパッチ キュー。

    戻り値

    指定されたスケジューラーに値を提供する出版社。