Swift 从Rx中的某个时间点接收可观测事件

Swift 从Rx中的某个时间点接收可观测事件,swift,reactive-programming,rx-swift,Swift,Reactive Programming,Rx Swift,我想订阅一个可观察的,但我不关心订阅前发出的事件 使用skipUntiloperator,我发现了一种黑客方式: let a: Observable<Int> // ... a.skipUntil(Observable.of(0)) // ... 没有“订阅之前的事件”这样的事情,因为一个可观察对象直到订阅之后才开始发出事件 例如,查看create函数 let obs = Observable.create { observer in // do stuff to obs

我想订阅一个
可观察的
,但我不关心订阅前发出的事件

使用
skipUntil
operator,我发现了一种黑客方式:

let a: Observable<Int>
// ...
a.skipUntil(Observable.of(0)) // ...
没有“订阅之前的事件”这样的事情,因为一个可观察对象直到订阅之后才开始发出事件

例如,查看
create
函数

let obs = Observable.create { observer in 
    // do stuff to observer
    return Disposables.create()
}
每次订阅可观察对象时,都会调用传递到create函数中的闭包。换句话说,每个订阅都有自己的一系列事件,并且每个事件都从新的闭包执行开始。订阅发生之前没有“事件”

以上所有内容都是针对默认的“冷”可观察。还有一种“热”观察对象(如主体)的概念,它在所有订阅者之间共享它们的事件,但它们不存储旧事件,除非您明确使用一个专门用于存储旧事件的对象

因此,解决问题的方法不是寻找黑客,而是使用合适的工具


更新


关于您对使用BehaviorSubject的评论。简单的解决方案是,如果不需要它的功能,就不要使用它。用一个公开的主题代替。另一个解决方案是使用
.skip(1)
避免获取当前持有的值。

我明白了。是的,我指的是热观测,特别是行为主体。考虑到我有一个行为主题,我如何订阅最新的活动?我是否创建另一个PublishSubject,将Behavior Subject绑定到它,然后才订阅PublishSubject?
let obs = Observable.create { observer in 
    // do stuff to observer
    return Disposables.create()
}