Value
@frozen
public struct Value<Subscribable> : Publisher where Subscribable : RealmSubscribable, Subscribable : ThreadConfined
A publisher which emits an object or collection each time that object is mutated.
-
This publisher can only fail due to resource exhaustion when creating the worker thread used for change notifications.
Declaration
Swift
public typealias Failure = Error
-
This publisher emits the object or collection which it is publishing.
Declaration
Swift
public typealias Output = Subscribable
-
Captures the
NotificationToken
produced by observing a Realm Collection.This allows you to do notification skipping when performing a
Realm.write(withoutNotifying:)
. You should use this call if you require to write to the Realm database and ignore this specific observation chain. TheNotificationToken
will be saved on the specifiedKeyPath
from the observation block set up inreceive(subscriber:)
.Declaration
Swift
public func saveToken<T>(on object: T, at keyPath: WritableKeyPath<T, NotificationToken?>) -> ValueWithToken<Subscribable, T>
Parameters
object
The object which the
NotificationToken
is written to.keyPath
The KeyPath which the
NotificationToken
is written to.Return Value
A
ValueWithToken
Publisher. -
Specifies the scheduler on which to perform subscribe, cancel, and request operations.
For Realm Publishers, this determines which queue the underlying change notifications are sent to. If
receive(on:)
is not used subsequently, it also will determine which queue elements received from the publisher are evaluated on. Currently only serial dispatch queues are supported, and theoptions:
parameter is not supported.Declaration
Swift
public func subscribe<S>(on scheduler: S) -> Value<Subscribable> where S : Scheduler
Parameters
scheduler
The serial dispatch queue to perform the subscription on.
Return Value
A publisher which subscribes on the given scheduler.
-
Specifies the scheduler on which to perform downstream operations.
This differs from
subscribe(on:)
in how it is integrated with the autorefresh cycle. When usingsubscribe(on:)
, the subscription is performed on the target scheduler and the publisher will emit the collection during the refresh. When usingreceive(on:)
, the collection is then converted to aThreadSafeReference
and delivered to the target scheduler with no integration into the autorefresh cycle, meaning it may arrive some time after the refresh occurs.When in doubt, you probably want
subscribe(on:)
.Declaration
Swift
public func receive<S>(on scheduler: S) -> RealmPublishers.Handover<`Self`, S> where S : Scheduler
Parameters
scheduler
The serial dispatch queue to receive values on.
Return Value
A publisher which delivers values to the given scheduler.