iOS/RxSwift

RxSwift Operator) CombineLatest

Developer-Michelle 2023. 2. 15. 11:05

CombineLatest 오퍼레이터 어디에다가 쓸 수 있을까?

 

ID, PASSWORD 를 사용자로부터 입력받아서

CombineLatest operator 도움을 받아

하나의 Observable sequence 로 합친다.

 

CombineLatest

2 개의 Observable에서 방출된 시퀀스에서 최신 이벤트를 결합

 

let observable1 = userNameTextField.rx.text.orEmpty
let observable2 = passwordTextField.rx.text.orEmpty
        
let observableCombined = Observable.combineLatest(observable1, observable2)
        
        loginBtn.rx.tap
            .withLatestFrom(observableCombined)
            .subscribe(onNext: {
                self.login(user: $0, pass: $1)
            })
            .disposed(by: disposeBag)

 

위 코드를 간단하게 줄이면 다음과 같다.

 

loginBtn.rx.tap
            .withLatestFrom(Observable.combineLatest(userNameTextField.rx.text.orEmpty, passwordTextField.rx.text.orEmpty))
            .subscribe(onNext: {
                self.login(user: $0, pass: $1)
            })
            .disposed(by: disposeBag)

 

사용자로부터 탭 이벤트를 받으면,

컴바인된 Observable sequence 로부터 방출된 최신의 이벤트를 로그인 메서드에 전달