observable에서 특정 조건을 만족하는 item만 방출합니다.
Observable.of(1,2,3,4,5,6)
.filter {$0 > 3}
.subscribe(onNext: {
print($0)
})
// 실행 시 다음을 출력합니다
4
5
6
: 어떠한 item도 방출하지 않음
모든 이벤트를 방출되지 않도록 무시하지만,
종료 알림(onError, onCompleted)은 그대로 통과하도록 허용합니다.
Observable에서 내보내는 알림을 모두 무시하고 종료 알림만 받고싶을 때 사용하면 용이합니다.
let disposeBag = DisposeBag()
let z = PublishSubject<String>()
z
.ignoreElements()
.subscribe {
print($0)
}
.disposed(by: disposeBag)
z.onNext("a")
z.onNext("a")
z.onNext("a")
z.onNext("a")
z.onCompleted()
// 실행시 다음을 출력합니다
completed
: Observable이 방출한 n번째 항목한 내보냄
특정 index에 위치한 아이템만 가져와 단독으로 방출합니다.
let disposeBag = DisposeBag()
let b = PublishSubject<String>()
b
.element(at: 2)
.subscribe(onNext: {
print($0)
})
.disposed(by: disposeBag)
b.onNext("a")
b.onNext("b")
b.onNext("c")
b.onNext("d")
//실행 시 다음을 출력합니다.
c
: Observable이 배출한 항목에서 처음 n개 무시
let disposeBag = DisposeBag()
Observable.of("a","b","c","d","e","f")
.skip(3)
.subscribe (onNext: {
print($0)
})
.disposed(by: disposeBag)
// 실행 시 다음을 출력합니다.
d
e
f
: 조건이 false가 될 때까지 Observable이 내보낸 항목을 버림
let disposeBag = DisposeBag()
Observable.of("a","b","c","d","e","f")
.skip(while: {$0 != "c"})
.subscribe (onNext: {
print($0)
})
.disposed(by: disposeBag)
// 실행 시 다음을 출력합니다.
c
d
e
f
: 두 번째 observable이 방출할 때까지 observable이 방출한 항목 버림
let x = PublishSubject<String>() // 현재 observable
let y = PublishSubject<String>() // 다음 observable
x
.skip(until: y)
.subscribe(onNext: {
print($0)
})
.disposed(by: disposeBag)
x.onNext("a")
x.onNext("b")
y.onNext("y")
x.onNext("c")
// 실행 시 다음을 출력합니다
c
: skip의 반대로 observable이 방출한 처음 n개만 내보냄
Observable.of("a","b","c","d","e","f")
.take(4)
.subscribe (onNext: {
print($0)
})
.disposed(by: disposeBag)
// 실행 시 다음을 출력합니다
a
b
c
d
: 조건이 false가 될 때까지 observable이 방출한 항목 내보냄
Observable.of("a","b","c","d","e","f")
.take(while: {$0 != "c"})
.subscribe (onNext: {
print($0)
})
.disposed(by: disposeBag)
// 실행 시 다음을 출력합니다.
a
b
: 두 번째 observable이 항목을 배출하거나 종료하면 기존 observable이 배출한 항목을 모두 버림
let x = PublishSubject<String>() // 현재 observable
let y = PublishSubject<String>() // 다음 observable
x
.take(until: y)
.subscribe(onNext: {
print($0)
})
.disposed(by: disposeBag)
x.onNext("a")
x.onNext("b")
y.onNext("y")
x.onNext("c")
// 실행 시 다음을 출력합니다.
a
b
: 중복된 항목을 연달아 방출할 때 중복된 값을 막음
Observable.of("a","b","c","c","c","d","e","e","e","c","f")
.distinctUntilChanged()
.subscribe(onNext: {
print($0)
})
.disposed(by: disposeBag)
// 실행 시 다음을 출력합니다.
a
b
c
d
e
c
f