RxSwift 6

RxSwift: Combining operators

startWithobservable이 방출할 요소 앞부분에 다른 요소를 추가하는 연산자. 주로 기본 값이나 시작 값을 지정할 때 사용한다. LIFO 방식이다.let disposeBag = DisposeBag()let numbers = [1, 2, 3, 4, 5]Observable .from(numbers) .startWith(-1, -2) .startWith(-3, -4) .subscribe { print($0) } .disposed(by: disposeBag)/*next(-3)next(-4)next(-1)next(-2)next(1)next(2)next(3)next(4)next(5)completed*/concat2개의 observable를 연결하는 연산자.하나의 observab..

swift 2022.08.19

RxSwift: Delegate proxy

DelegateProxyDelegateProxy란 delegate method를 호출하는 객체와 구독자 사이에 delegate를 대신 처리하는 객체이다. 특정 delegate method가 호출되는 시점에 구독자로 next 이벤트를 전달한다.Delegate Pattern을 사용한 코드를 DelegateProxy를 구현해 Rxswift 형식으로 바꿔보자!// delegate pattern 코드func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { // code}// rxswift 코드let locationManager = CLLocationM..

swift 2022.08.08

RxSwift: Binder

Binder는 UI 바인딩에 쓰는 특별한 Observer이다. 아래와 같은 특징을 가진다.• 에러를 방출하지 않는다.Error가 방출되면 Observable의 시퀀스가 끊기기 때문에 UI 업데이트가 종료되기 때문이다.• 특정 스케줄러를 지정하지 않는 이상 메인 스케줄러에서 동작한다.UI 업데이트는 메인 스케줄러에서 동작하기 때문이다.타입public struct Binder: ObserverTypeObserverType의 제네릭 구조체이다.생성자target : Binder가 확장하는 UI 객체 클래스이다. (ex UILabel...)scheduler : 동작할 스케줄러 기본 값이 메인 스케줄러이다.binding : 보통 Value로 전달된 값을 Target에 있는 속성에 저장하는 클로저.public ini..

swift 2022.08.05

RxSwift: Transforming Operators

Observable를 변환시키는 연산자toArrayCompleted 이벤트가 방출되면 지금까지 방출된 모든 요소를 하나의 배열로 만들어 Single로 전달하는 연산자이다.Single은 Observable의 하나의 형태로 한 개의 값 또는 에러 이벤트를 방출한다. 그렇기 때문에 구독시 success와 error의 형태로 이벤트를 구분한다.let disposeBag = DisposeBag()let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]let subject = PublishSubject()subject .toArray() .subscribe { event in switch event { case .success(let result): ..

swift 2022.07.31