値
@frozen
public struct Value<Subscribable> : Publisher where Subscribable : RealmSubscribable, Subscribable : ThreadConfined
オブジェクトがミューテーションされるたびにオブジェクトまたはコレクションを出力する出版社。
-
このパブリックは、変更通知に使用されるワーカー スレッドを作成するときにのみ、リソースが不足しているために失敗します。
宣言
Swift
public typealias Failure = Error
-
この出版社は、公開するオブジェクトまたはコレクションを出力します。
宣言
Swift
public typealias Output = Subscribable
-
は、Realm コレクションを監視して生成された
NotificationToken
をキャプチャします。これにより、
Realm.write(withoutNotifying:)
を実行するときに通知スキップが可能になります。 Realm データベースに書き込み、この特定の監視チェーンを無視する必要がある場合は、この呼び出しを使用する必要があります。NotificationToken
は、receive(subscriber:)
に設定された監視ブロックから指定されたKeyPath
に保存されます。宣言
Swift
public func saveToken<T>(on object: T, at keyPath: WritableKeyPath<T, NotificationToken?>) -> ValueWithToken<Subscribable, T>
パラメーター
object
NotificationToken
が書き込まれるオブジェクト。keyPath
NotificationToken
が書き込まれる KeyPath 。戻り値
ValueWithToken
出版社。 -
サブスクライブ、キャンセル、リクエスト操作を実行するスケジューラーを指定します。
Realm パブリッシャーの場合、基礎の変更通知がどのキューに送信されるかが決まります。
receive(on:)
がその後で使用されない場合は、出版社から受け取ったどのキュー要素が評価されるかも決定されます。 現在はシリアル ディスパッチ キューのみをサポートしており、options:
パラメータはサポートされていません。宣言
Swift
public func subscribe<S>(on scheduler: S) -> Value<Subscribable> where S : Scheduler
パラメーター
scheduler
サブスクリプションを実行するためのシリアルディスパッチキュー。
戻り値
指定されたスケジューラーをサブスクライブする出版社。
-
下流操作を実行するスケジューラーを指定します。
これは、自動更新 サイクルとの統合方法が
subscribe(on:)
とは異なります。subscribe(on:)
を使用する場合、サブスクライブはターゲット スケジューラーで実行され、パブリックは更新中に コレクションを発行します。receive(on:)
を使用する場合、コレクションはThreadSafeReference
に変換され、自動更新サイクルに統合されることなくターゲット スケジューラーに配信されます。つまり、更新が発生した後、一定時間にタイムアウトする可能性があります。不明なときは、一般に
subscribe(on:)
が必要です。宣言
Swift
public func receive<S>(on scheduler: S) -> RealmPublishers.Handover<`Self`, S> where S : Scheduler
パラメーター
scheduler
値を受信するシリアル ディスパッチ キュー。
戻り値
指定されたスケジューラーに値を提供する出版社。