Ray Wenderlich/RxSwift
-
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를 사용하는 상황을 가정하고 있다. (뒤에서 ..
-
RxSwift - combineLatest(), zip() 에 대해서 알아보자.Ray Wenderlich/RxSwift 2018. 7. 13. 02:41
Ch9. Combining operators p.186 - p.190 combineLatest그림을 보고 combineLatest가 어떤 기능을 할 지, 먼저 추측해보자.셜록급의 추리가 아니더라도, 어느정도 끄덕하게 될 만큼 직관적이다.두 개의 시퀀스가 combineLatest를 만나 하나의 시퀀스가 되었다.이 합쳐진 시퀀스는 서브 시퀀스(즉, left와 right)에서 이벤트가 발생할 때마다, 이벤트를 발생시킨다.합쳐진 시퀀스는 두 서브 시퀀스의 Element를 조합하여 새로운 Element를 전달한다. 첫 번째 예제우선 두 개의 시퀀스를 준비해보자.let left = PublishSubject() let right = PublishSubject() combineLatest를 사용하여 하나로 합쳐진 시..
-
RxSwift - merge()에 대해서 알아보자.Ray Wenderlich/RxSwift 2018. 7. 6. 02:23
Ch9. Combining Operators p.184 - p.186 merge()RxSwift에서 시퀀스를 합쳐주는 operator는 다양하다. 그 중, merge를 이용해 쉽게 접근해보자. 아래 그림을 보고, merge가 어떤 역할을 하는지 한번 짐작해보자. 어떤 역할을 하는지, 코드를 통해서 알아보자. (아래는 이미지입니다. 텍스트로 작성한 코드는 본문 최하단에 첨부)1. PublishSubject를 두 개 만들었다.2. Observable의 Observable을 만든다. source의 타입은 Observsble이다.3. merge()를 사용했다. merge()의 리턴 값을 subscribe하고 있다.4. leftValues에는 독일의 도시가, rightValues에는 스페인의 도시가 들어있다. l..
-
RxSwift - startWith(_:), concat(_:), concatMap(_:)에 대해서 알아보자.Ray Wenderlich/RxSwift 2018. 7. 5. 00:38
Ch9. Combining Operators p.179 - p.183 startWith(_:)Observable시퀀스 앞에 다른 값을 추가해주는 기능을 한다.그림과 코드를 보면 너무나도 간단하다!! (2, 3, 4)라는 시퀀스가 있고, 맨 앞에 1을 추가하고 싶다.이를 해결하기 위해 startWith(1)을 사용해보자.let numbers = Observable.of(2, 3, 4) let observable = numbers.startWith(1)observable.subscribe(onNext: { value in print(value) }) 사족을 다는 것보다, 이것으로 설명을 마치는게 제일 깔끔해보인다. concat(_:)결론부터 말하자면, startWith(_:)와 굉장히 흡사하다.startWi..