【发布时间】:2017-06-05 15:23:18
【问题描述】:
我正在尝试做的是订阅一个发出Enums 序列的可观察对象。目标是每次我看到 3 个特定类型的 Enums 时都会调用我的 onNext。以下是我尝试过的但是,它只能工作一次。它没有继续下去。我想知道处理这个问题的最佳方法是什么。
enum Baseball {
case strike, ball, hit
}
let bag = DisposeBag()
let subject = PublishSubject<Baseball>()
subject.filter { $0 == .strike }
.elementAt(2)
.subscribe(onNext: { _ in print("3 Strikes you're out")
}).addDisposableTo(bag)
// First batter
subject.onNext(.strike)
subject.onNext(.ball)
subject.onNext(.ball)
subject.onNext(.ball)
subject.onNext(.strike)
subject.onNext(.strike) // 3 Strikes you're out is printed
// Second batter
subject.onNext(.ball)
subject.onNext(.ball)
subject.onNext(.hit)
// Third batter
subject.onNext(.strike)
subject.onNext(.strike)
subject.onNext(.strike) // Would like this to fire as well
【问题讨论】: