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
'iOS > RxSwift' 카테고리의 다른 글
[RxSwift] UITextField에 Rx 적용하기 (0) | 2022.11.01 |
---|---|
[RxSwift] ReactorKit 알아보기 (0) | 2022.10.30 |
[RxSwift] Combining Operator 알아보기 (0) | 2022.10.23 |
[RxSwift] Transforming Operator 알아보기 (0) | 2022.10.23 |
[RxSwift] Filtering Operator 알아보기 (1) | 2022.10.23 |