[swift] RxSwift에서의 필터링 연산자 활용 방법

RxSwift는 ReactiveX 프로그래밍 패러다임을 iOS 및 macOS 개발에 적용하는 도구로, 비동기적인 이벤트 흐름을 다루기 위해 사용됩니다. 필터링 연산자는 Observable의 이벤트를 조건에 따라 필터링하는데 유용하게 사용됩니다. 이번 글에서는 RxSwift에서 제공하는 주요 필터링 연산자를 소개하고 간단한 예제 코드를 통해 활용 방법을 알아보겠습니다.

filter 연산자

filter 연산자는 주어진 조건에 따라 Observable의 이벤트를 필터링합니다. 조건이 true로 평가되는 이벤트만을 허용하고, 나머지 이벤트는 무시됩니다. 아래는 filter 연산자의 사용 예시입니다.

import RxSwift

let observable = Observable.of(1, 2, 3, 4, 5)

let filteredObservable = observable.filter { $0 % 2 == 0 }

filteredObservable.subscribe(onNext: { element in
    print(element)
}).disposed(by: disposeBag)

위의 예제 코드에서는 1부터 5까지의 숫자를 가진 Observable을 생성하고, filter 연산자를 사용하여 짝수만을 필터링한 Observable을 생성합니다. 그리고 subscribe 메소드를 통해 필터링된 결과를 출력합니다.

distinctUntilChanged 연산자

distinctUntilChanged 연산자는 연속적으로 동일한 이벤트가 발생하는 경우 이를 제거합니다. 연속적으로 동일한 이벤트가 발생하는 경우, 가장 처음 발생한 이벤트만을 유지하고 나머지는 제거됩니다. 아래는 distinctUntilChanged 연산자의 사용 예시입니다.

import RxSwift

let observable = Observable.of("A", "A", "B", "C", "C", "C", "D")

let distinctObservable = observable.distinctUntilChanged()

distinctObservable.subscribe(onNext: { element in
    print(element)
}).disposed(by: disposeBag)

위의 예제 코드에서는 문자열 “A”, “A”, “B”, “C”, “C”, “C”, “D”를 가진 Observable을 생성하고, distinctUntilChanged 연산자를 사용하여 연속적으로 동일한 이벤트를 제거한 Observable을 생성합니다. subscribe 메소드를 통해 제거된 결과를 출력합니다.

take 연산자

take 연산자는 Observable에서 처음부터 정해진 개수의 이벤트만을 발생시킵니다. 주어진 개수의 이벤트가 발생하면 Observable은 자동으로 종료됩니다. 아래는 take 연산자의 사용 예시입니다.

import RxSwift

let observable = Observable.of(1, 2, 3, 4, 5)

let takenObservable = observable.take(3)

takenObservable.subscribe(onNext: { element in
    print(element)
}).disposed(by: disposeBag)

위의 예제 코드에서는 1부터 5까지의 숫자를 가진 Observable을 생성하고, take 연산자를 사용하여 처음 세 개의 이벤트만을 발생시킨 Observable을 생성합니다. subscribe 메소드를 통해 발생시킨 결과를 출력합니다.

참고 자료