ObjectChangeset

@frozen
public struct ObjectChangeset<O> : Publisher where O : ThreadConfined

发出 ObjectChange 的发布者每次修改观察到的对象时

receive(on:)subscribe(on:)可以直接对此发布者调用,并且仅当存在中间转换时才需要调用.threadSafeReference() 。 如果使用subscribe(on:) ,则应始终是管道中的第一个操作。

使用objectChangeset()函数创建此发布者。

  • 此发布者会发出 ObjectChange指示每次在修改观察对象的写事务后刷新 Realm 时哪个对象以及该对象的哪些属性发生了变化。

    声明

    迅速

    public typealias Output = ObjectChange<O>
  • 该发布者通过 ObjectChange 的.error案例报告错误。

    声明

    迅速

    public typealias Failure = Never
  • 捕获通过观察 Realm 集合而生成的NotificationToken

    这允许您在执行Realm.write(withoutNotifying:)时跳过通知。 如果您需要写入 Realm 数据库并忽略此特定观察链,则应使用此调用。 NotificationToken将保存在receive(subscriber:)中设置的观察块中的指定KeyPath上。

    声明

    迅速

    public func saveToken<T>(on tokenParent: T, at keyPath: WritableKeyPath<T, NotificationToken?>) -> ObjectChangesetWithToken<O, T> where O : RealmSwiftObject

    参数

    object

    写入NotificationToken的对象。

    keyPath

    写入NotificationToken的 KeyPath。

    返回值

    一个ObjectChangesetWithToken发布者。

  • 指定执行订阅、取消和请求操作的调度程序。

    对于 Realm 发布者,这决定了将底层变更通知发送到哪个队列。 如果随后未使用receive(on:) ,它还将确定对从发布者收到的哪些队列元素进行评估。 目前仅支持串行调度队列,不支持options:参数。

    声明

    迅速

    public func subscribe<S>(on scheduler: S) -> ObjectChangeset<O> where S : Scheduler

    参数

    scheduler

    要对其执行订阅的串行调度队列。

    返回值

    在给定调度器上进行订阅的发布者。

  • 指定执行下游操作的调度器。

    这与subscribe(on:)的不同之处在于它与自动刷新周期集成的方式。 使用subscribe(on:)时,在目标调度器上执行订阅,并且发布者将在刷新期间发出集合。 使用receive(on:)时,该集合会转换为ThreadSafeReference并传递到目标计划程序,而不会集成到自动刷新周期中,这意味着它可能会在刷新发生后的某个时间到达。

    如有疑问,您可能想要 subscribe(on:)

    声明

    迅速

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

    参数

    scheduler

    用于接收值的串行调度队列。

    返回值

    向给定调度程序传递值的发布者。