본문 바로가기

RxSwift

(4)
[RxSwift] Operators (2) Transforming Operators toArray Observable이 방출하는 모든 요소를 배열에 담은 다음 Completed 시점에 이 배열을 방출(하나의 요소를 방출)하고자 할때 toArray 연산자를 사용한다. 소스 Observable이 종료되기 전까지 구독자에게 이벤트가 전달되지 않는다. let subject = PublishSubject() subject .toArray() .subscribe { print($0) } .disposed(by: disposeBag) subject.onNext(1) // 구독자로 전달되지 않음 subject.onNext(2) // 구독자로 전달되지 않음 subject.onCompleted() // Observable이 종료되어 구독자애게 하나의 배열을 전달하..
[RxSwift] Operators (1) RxSwift에서는 새로운 Observable을 생성한다거나, 방출되는 요소를 필터링, 혹은 여러 Observable을 하나로 합친다거나 하는 다양한 메소드들이 있다. 그리고 이런것들을 연산자(Operator)라고 부른다. (연산자는 새로운 Observable을 return한다.) 연산자는 보통 subscribe 앞에 추가한다. 즉 구독자(observer)에게 전달되기 전까지 전달 되어야 할 데이터를 원하는 만큼 가공한 후에 전달되게끔 의도할 수 있다. Create Operators just 먼저 just 연산자에 대해서 알아보겠다. just 연산자는 하나의 항목을 방출하는 Observable을 생성한다. (파라미터로 하나의 요소를 받아서 Observable을 return) let element = "S..
[RxSwift] Subject & Relay 지난 포스팅에서 Observable은 이벤트를 observer에게 전달하고, observer는 Observable을 구독하여 전달되는 이벤트를 처리한다고 했다. Observable은 observer와 달리 다른 Observable을 구독하지 못하며(observer만이 구독 가능) observer는 다른 observer로 이벤트를 전달하지 못한다.(Observable만이 이벤트 전달 가능) 여기서 Observable과 observer의 역할을 동시에 수행할수 있는 Subject라는 것이 나왔다. Subject는 다른 Observable로부터 이벤트를 받을수도 있으며 Subject를 구독하고 있는 구독자에게 이벤트를 전달할수도 있다. 그러니 Subject는 Observable인 동시에 observer인 샘이..
[RxSwift] Observables & Observer 이번에 이직을 준비하면서 한동안 블로그 관리를 하지 못했다. 그리고 그 과정에서 과제를 받아 미니프로젝트를 진행하게 되었고 RxSwift를 프로젝트에 도입해볼 기회가 생겼었다. RxSwift를 사용하기 전에는 주로 비동기적으로 발생하는 결괏값을(Networking 작업, 시간이 오래걸리는 작업 등등) 사용하기 위해 complition block을 통한 비동기 처리 사용으로 작업을 해왔더라면 RxSwift에서는 Observable이라는 클래스로 감싸진채로 값을 바로 return 받아 비동기 처리를 동기 처리한것 마냥 사용을 할 수 있다는걸 알게 되었다. RxSwfit를 사용하지 않고 callback 함수의 구현으로 비동기 처리를 진행 한다고 가정했을때 상황에 따라 계속적인 callback이 발생할수도 있어..