RxSwift
-
[RxSwift] Rx Observer들의 기본 스케쥴러앱등이에게 살충제를 뿌린다./Swift 2020. 9. 11. 17:15
ControlProperty는 항상 MainScheduler // ControlProperty.swift **The implementation of `ControlProperty` will ensure that sequence of values is being subscribed on main scheduler (`subscribeOn(ConcurrentMainScheduler.instance)` behavior).** Driver는 거의 MainScheduler // Driver.swift If `drive*`, `subscribe*` and `bind*` are called from background thread, it is possible that initial replay will happen ..
-
[RxSwift/RxCocoa] RxCocoa에서 TableView사용하는 코드를 쪼개서 이해해보자.앱등이에게 살충제를 뿌린다./Swift 2020. 3. 15. 20:48
RxCocoa-TableView사용을 위해 구글링을 해보면 아래와 같은 예제소스가 가득하다. // let items = Observable.just([ "First Item", "Second Item", "Third Item" ]) items .bind(to: tableView.rx.items) { (tableView, row, element) in let cell = tableView.dequeueReusableCell(withIdentifier: "Cell")! cell.textLabel?.text = "\(element) @ row \(row)" return cell }.disposed(by: disposeBag) 코드를 좀 이해해보기 위해서UITableView+Rx.swift를 들어가보면 item..
-
[RxSwift/RxCocoa] Subject는 알겠는데, Relay는 뭐지?앱등이에게 살충제를 뿌린다./Swift 2020. 3. 14. 18:34
오 마이갓..Ray Wenderlich의 RxSwift를 2번이나 완독하고 프로젝트에 투입되었는데.. 아는 것보다 모르는 게 더 많다😭Ray Wenderlich에서는 RxCocoa에 대해서는 별로 다루지 않았기 때문이다. ------------------------------------------------------------------------------------------------ 일단 PublishRelay, BehaviorRelay에 대해서 살펴보자. /// BehaviorRelay is a wrapper for `BehaviorSubject`. /// /// Unlike `BehaviorSubject` it can't terminate with error or completed. publ..
-
RxSwift - MVC, MVVP with RxSwiftRay Wenderlich/RxSwift 2020. 2. 29. 22:14
MVCRxSwift는 MVVM과 엄청난 하모니를 자랑한다. 애플에서는 MVC를 주로 사용하여 훌륭한 시스템을 구축했다. 둘의 차이를 간략하게 알아보자.둘은 굉장히 가까운 사촌관계라고 볼 수도 있다. 하지만 그 둘은 분명히 다르다. 이 책에서 대부분의 예제를 MVC로 설명했다. MVC는 굉장히 직관적이고 간단한 앱을 만들 때 굉장히 유용하다.Controller는 모델과 뷰를 업데이트할 수 있는 중심역할을 하고,View는 데이터를 화면에 표현해주는 역할Model은 데이터를 Read/Write하며 저장하는 역할을 했다. MVC가 초반에는 앱을 만드는데 꽤나 좋은 패턴이다. 하지만 앱의 규모가 커질수록 많은 클래스들이 뷰도 모델도 아닌 상황이 발생한다. 자연스레 이런 애들은 컨트롤러로 때려박는다.우리가 흔히 범..
-
RxSwift - TableView, CollectionVIew를 사용해보자Ray Wenderlich/RxSwift 2020. 2. 29. 21:28
Ch.18 Table and CollectionViewsiOS앱에서 가장 많이 사용하는 UI는 UITableView, UICollectionVIew를 통해 데이터의 리스트를 표현하는 것이다. 보통은 delegate, dataSource의 콜백을 통해 데이터를 표현한다. RxSwift를 사용하면 observable sequence를 TableView, CollectionView에 표현할 수 있음을 물론이고, 코드의 양도 줄일 수 있다. UITableView, UICollectionView의 간단한 사용은 RxCocoa에 이미 포함되어 있다. 좀 더 심화적인 내용(섹션관리, 애니메이션 등)은 RxDataSources(https://github.com/RxSwiftCommunity/RxDataSources)를..
-
RxSwift - retryWhen(_:)에 대해서 알아보자Ray Wenderlich/RxSwift 2020. 2. 20. 22:22
Ch14. Error Handling in Practice p.292 - 294RxSwift의 에러처리 방법에 대해서 알아보자. 크게 2가지가 있다.1. Catch하여 처리하기2. Retry하기 (Retry해도 실패하면 Catch하던가) 1은 Swift와 유사하니 끄덕하고 넘어가자.2를 수행하기 위해 RxSwift에서는 retry() 오퍼레이터를 제공한다. retry를 시도하는 3가지의 메소드가 있다.func retry() -> RxSwift.Observable // 1 func retry(_ maxAttemptCount:) -> Observable // 2 func retryWhen(_ notificationHandler:) -> Observable // 3 1, 2번의 경우는 직관적이다. 에러가 발생..
-
RxSwift - amb(_:), switchLatest()에 대해서 알아보자Ray Wenderlich/RxSwift 2020. 2. 10. 22:02
Ch9. Combining operatiors p.191 - p.193RxSwift에는 "Switching" 오퍼레이터라고 불리는 2개의 주요 오퍼레이터가 있다.바로 amb(_:)와 switchLatest()다. 이 오퍼레이터들은 컴바인한 이벤트 또는 여러 시퀀스들 중에서 하나의 시퀀스로 Switch해준다.(원문: They both allow you to produce an observable sequence by switching between the events of the combined or source sequences.)이를 통해 우리는 런타임에 어떤 시퀀스를 사용할 지 결정할 수 있게 된다. amb(_:)amb는 ambiguous의 약자다. let left = PublishSubject()l..
-
RxSwift - withLastestFrom(_:), sample(_:)에 대해서 알아보자Ray Wenderlich/RxSwift 2020. 2. 10. 20:58
Ch9. Combining operatiors p.191 - p.193앱은 여러가지의 인풋을 다룬다. 여러 Observable에서 발생하는 이벤트들을 동시에 관리해야하는 경우가 많이 있을 것이다.버튼을 누르는 등의 간단한 트리거 역할을 하는 인풋이 있을 수 있고, 동시에 다른 인풋에서는 데이터가 전달 될 수도 있다.RxSwift는 이런 상황에 적절한 Operator를 제공하고 있다. withLatestFrom(_:)그림을 보면 두 개의 시퀀스가 있다.그리고 withLatestFrom을 사용한 시퀀스가 있다.tap 이벤트가 발생할 때, textfield의 마지막 Element의 값이 전달되고 있다. 우리가 자주 하는 UI코딩에서, button과 textfield를 사용하는 상황을 가정하고 있다. (뒤에서 ..