RxSwift + MVVM
RxSwift(6). Disposables
Observable.from([1, 2, 3]) .subscribe(onNext: {elem in print("Next", elem) }, onError: {error in print("Error", error) }, onCompleted: { print("Completed") }, onDisposed: { print("Disposed") }) //Next 1 //Next 2 //Next 3 //Completed //Disposed Next, Error, Completed는 모두 학습한 Event들이다. Disposed는 Observable이 전달하는 Event는 아니다. 파라미터로 클로저를 전달하면 Observable과 관련된 모든 리소스들이 제거된 뒤에 호출된다. 리소스가 해제되는 시점에 어떤 코드를..
RxSwift(5). infallible
infallible 1. 절대 보증할 수 있는 2. 결코 틀리지 않은 3. 절대 옳은 Observale는 3가지 Event를 방출한다 Next, Error, Completed Completed와 Next는 성공으로 분류하고 Error는 실패로 분류한다 infallible은 새로운 형태의 Observale이다. infallible의 의미와 Observale을 결합해보면 알 수 있다. infallible은 Next와 Completed만을 방출한다. enum MyError: Error { case unknown } let observable = Observable.create { observer in observer.onNext("Hello") observer.onNext("Observable") //obse..
RxSwift(4). Observer
Observable.create { (observer) -> Disposable in observer.on(.next(0)) observer.onNext(1) observer.onCompleted() return Disposables.create() } .take(1) Observable.from([1, 2, 3]) create로 만들어진 Observable은 2개의 정수를 방출하고 종료된다. 하지만 이상태에선 어떤 이벤트도 전달되지 않는다. 단순히 Observable이 생성되어 있는 상태이다. 이렇게 만들어진 Observable에서 연산자를 호출하더라도 Event는 전달되지 않는다. 이 코드 역시 Event가 구독자에게 전달되는 방식을 정의할 뿐이다. 실제로 Event가 전달되는 시점은 Observer..
RxSwift(3). Observables과 Observable의 생성(create, from)
Observable은 Observable Sequence 또는 Sequence라고 부르기도 한다. RxSwift에선 모두 Observable을 나타내는 용어로 쓰인다. Observable은 Event를 전달한다. Observer는 Observable을 감시하고 있다가 전달되는 Event들을 처리한다. Observer가 Observable을 감시한다는 것은 Observer가 Observable을 구독(Subscribe)한다고 한다. 그래서 Observer를 구독자(Subscriber)라고 부르기도 한다. Observable은 3가지 Event를 전달한다. Next Event Observable에서 새롭게 발생된 Event는 Next Event를 통해서 구독자에게 전달된다. Event에 값이 포함되어 있다면..
RxSwift(2). ReactiveProgramming, 반응형 프로그래밍
명령형 코드와 RxSwift로 작성한 반응형 코드를 작성해본다 RxSwift를 사용하지 않고 코드를 구현했다면 명령형 프로그래밍 패러다임으로 작성했을 것이다. 아주 단순한 코드를 작성해본다 var a = 41 var b = 52 a + b9 a = 1217 a에 저장된 값을 변경해도 a + b의 값은 변하지 않는다. a + b연산이 실행 될 때는 이 시점에 a와 b에 저장된 값을 사용해서 결과를 도출한다. 만약 a나 b에 저장된 값이 바뀔 때 마다 계산을 다시 실행하도록 구현하고싶다면? 명령형 코드에서 구현하는 것이 불가능하지 않지만 상대적으로 복잡한 코드를 작성해야한다. 반면 RxSwift로 작성한다면? 값이나 상태의 변화에 따라 새로운 결과를 도출해 내는 코드를 비교적 쉽게 구현할 수 있다. 이런 프..
RxSwift(1). RxSwift 장점, 설치
RxSwift는 ReactiveX라이브러리를 Swift 언어로 구현해 놓은 것. https://github.com/ReactiveX/RxSwift GitHub - ReactiveX/RxSwift: Reactive Programming in Swift Reactive Programming in Swift. Contribute to ReactiveX/RxSwift development by creating an account on GitHub. github.com RxSwift의 장점과 사용하는 이유 간단한 샘플 코드를 제공하는데, 기존코드에 비해 얼마나 단순해 지는지를 비교해본다. 첫 번째 코드 Observable.combineLatest(firstName.rx.text, lastName.rx.text) ..