Rxswift button tap stream error handling 이번 포스팅의 주제는 로그인이나 회원가입 로직 등을 구현할 때 버튼을 클릭하고 네트워크 통신을 RxSwift로 구현하였을 때 어떻게 에러 핸들링을 할 것인가? 에 대한 주제입니다. 문제 상황 해당 문제는 회원가입 기능을 구현하던 중 발생한 문제였습니다. 회원가입 시 필요한 정보(이메일, 비밀번호, 닉네임..) 등을 받고 마지막으로 로그인 버튼을 tap 한다면 해당 CombineLatest로 묶어놓았던 데이터들과 함께 Stream을 시작하여 네트워크 통신하는 Rx 로직을 구성하였습니다. 그 과정에서 flatMap을 통해 미리 싱글톤 패턴으로 구현해놓았던 NetWork 클래스 안의 로그인 API 통신 메서드를 호출하였습니다. - Net..
이번 시간엔 unicast, multicast의 개념에 대해 알아보자. Observable(unicast) vs Subject(multicast) Observable(unicast) - 1:1 연결방식의 특성을 가지고 있어서 독립적인 실행을 가지며, sequence가 내부적으로 공유되지 않는다. Subject(multicast) - 1:N 연결 방식의 특성을 가지고 있어서 해당 sequence가 내부적으로 공유된다. 사실 설명이나 그림만 보면 선뜻 잘 이해가 가지 않을 수 있다. 그래서 예시 코드로 어떻게 출력이 되는지 확인해보면 훨씬 직관일 것이라 생각이 든다. 한번 코드를 살펴보자. // 1. Observable func aboutUnicast() { let random = Observable.cre..
이번 시간에는 dispose에 대해 알아보자. dispose를 번역하면 말 그대로 '처분하다, 처리하다'라는 뜻을 가지고 있다. Dispose의 개념을 알아보고 이것은 단점을 보완하기 위해 DisposeBag 의 활용까지 알아보자. 다음 코드 예시를 살펴보면서 개념을 익혀보자. disposable = downloadJSON(downloadURL) .map { json in json?.count ?? 0 } // operator .filter { count in count > 0 } // operator .map { "\($0)" } // operator .observe(on: MainScheduler.instance) // sugar api - operator .subscribe(on: Concurren..
https://reactivex.io/documentation/subject.html ReactiveX - Subject If you have a Subject and you want to pass it along to some other agent without exposing its Subscriber interface, you can mask it by calling its asObservable method, which will return the Subject as a pure Observable. See Also reactivex.io RxSwif에서 Subject는 무엇인가? 이번시간엔 Subject가 무엇인지 알아보고 사용 예시 등을 알아보자. 우선 Subject가 무엇인지 항상 공식문서에..
https://reactivex.io/ ReactiveX CROSS-PLATFORM Available for idiomatic Java, Scala, C#, C++, Clojure, JavaScript, Python, Groovy, JRuby, and others reactivex.io 드디어 말로만 듣던 RxSwift를 처음 접하게 되었다. 러닝 커브가 꽤 있기도 하고 지금 까지 해왔던 방식과는 다른 방식으로 코드를 작성해야한다니 걱정 반 설렘 반으로 RxSwift를 공부하게되었다. 그래서 RxSwift가 뭘까? RxSwift는 Reactive + Extension+ Swift의 합성어로 RxSwift라는 단어에서 Rx는 ReactiveX, Reactive 반응? 적으로 무엇을 하는건가? 하는 생각이 ..