前言
本篇文章将要学习RxSwift
中过滤和条件操作符,在RxSwift
中包括了:
filter
distinctUntilChanged
elementAt
single
take
takeLast
takeWhile
takeUntil
skip
skipWhile
skipWhileWithIndex
skipUntil
filter
在Observable
序列中只发出满足过滤条件的事件。
let disposeBag = DisposeBag()
Observable.of(1,2,3,4,5).filter({$0 > 2}).subscribe(onNext: {print($0)}).disposed(by: disposeBag)
打印结果:
3
4
5
distinctUntilChanged
过滤连续发出的相同事件
let disposeBag = DisposeBag()
Observable.of(1,2,3,3,3,2,2,5,4).distinctUntilChanged().subscribe(onNext: {print($0)}).disposed(by: disposeBag)
打印结果:
1
2
3
2
5
4
elementAt
Observable
只发出指定位置的事件
let disposeBag = DisposeBag()
Observable.of(1,2,3,5,4).elementAt(2).subscribe(onNext: {print($0)}).disposed(by: disposeBag)
打印结果:
3
single
用法一:检测Observable
序列是否发射一个元素。如果发射多个,会报错。
let disposeBag = DisposeBag()
// error:Sequence contains more than one element
// Observable.of(1,2,3).single().subscribe(onNext: {print($0)}).disposed(by: disposeBag)
Observable.of(1).single().subscribe(onNext: {print($0)}).disposed(by: disposeBag)
用法二:检测Observable
序列发射的元素里面是否包含多个指定的元素,如果有多个或者没有,会报错。
let disposeBag = DisposeBag()
Observable.of("