[RxSwift] RxCocoa란?
iOS/RxSwift

[RxSwift] RxCocoa란?

728x90

Cocoa Framework

  • Foundation
  • ApplicationKit(UIKit)

RxCocoa

Binder

  • Binding 전
textField.rx.text
  .observe(on: MainScheduler.instance)
  .subscribe(onNext: {
      label.text = $0
  })
  .disposed(by: disposeBag)
  • Binding 후
textField.rx.text
  .bind(to: label.rx.text)
  .disposed(by: disposeBag)

Traits

Driver<Element> Signal<Element>
  • 에러를 방출하지 않는 특별한 observable
  • 모든 과정은 main thread에서 이뤄진다.
  • 스트림 공유가 가능하다.
  • Driver: 초기값 || 최신값 replay
  • Signal: 구독한 이후에 발생하는 값 전달

Rx Extension

extension Reactive where Base: T {}
extension Reactive where Base: UIView { 
	var sizeToFit: Binder<Void> {
		return Binder(base) { base, _ in
		    base.sizeToFit()
	    }
		} 
	}
Driver.just(Void())
  .drive(button.rx.sizeToFit)
  .disposed(by: disposeBag)

에러 관리

  • 인터넷 연결 없음: 오프라인
  • 잘못된 입력: 잘못된 타입, 길이, 크기, 내용
  • API, HTTP 에러: 400, 500, JSON Codable

catch

기본 do try catch문과 비슷

func catchAndReturn(_ element: Self.Element) -> RxSwift.Observable<Self.Element>

 

에러를 무시하고 기존의 값이 반환

모든 에러가 정의된 값으로 바뀜

 

retry

에러가 발생하지 않을때까지 재시도

재시도 횟수는 제한 가능

728x90