티스토리 뷰

Mobile/iOS

RxSwift distinct operator

out of coding 2018. 6. 11. 13:56

이전에 발생한 이벤트와 다른 이벤트가 발생할 경우에 나머지 흐름을 처리하도록 하는 operator 입니다.


distinctUntilChanged() 혹은 distinctUntilChanged(_ comparer: @escaping (Self.E, Self.E) throws -> Bool) 등등 다양한 조건을 사용할 수 있도록 되어 있습니다.


아래와 같은 부분은 아주 간단하게 사용할수 있으며, Equtable을 구현하여 두었기 때문에 아주 편하게 동작을 하게 됩니다.


1
2
Observable.of("A", "A", "B", "C")
.distinctUntilChanged()
cs


* 출력은 A, B, C로 나오게 됩니다.


그럼 위에 말한 distanctUntilChanged는 어떻게 사용을 하면 되는가에 대해서 설명 드리겠습니다.


일단 Equtable을 구현한 Class, Struct로 사용을 하면 이것은 문제가 안됩니다.


그러나 이것을 사용하지 않고 closure로 바로 사용을 하겠다면, 다음과 같이 사용을 합니다.


1
2
3
4
5
6
7
Observable.of("A", "A", "B", "C")
    .distinctUntilChanged { before, after -> Bool in
            before == after
    }
    .subscribe(onNext: { str in
        print("str = \(str)")
    }).disposed(by: disposeBag)
cs


이렇게 하면 출력 결과는 다음과 같습니다.


str = A
str = B
str = C
cs


결론적으로 말을 한다면 true의 값이 넘어오게 되면 비교하는것이 같다라고 판단하는것입니다.


그럼 즐코딩

'Mobile > iOS' 카테고리의 다른 글

Swift. Codable Decoding (1)  (0) 2018.06.17
RxSwift DisposeBag  (0) 2018.06.13
RxSwift의 take operators  (0) 2018.06.11
iOS Carthage 기본  (0) 2018.06.10
CocoaPod 사용하는 라이브러리들의 버전 확인  (0) 2018.06.10
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함