티스토리 뷰
이전에 RxSwift의 Traits에 대해서 알아보았습니다.
2019/08/09 - [Program/iOS] - iOS. RxSwift Traits에 관하여 알아봅시다. 어렵지 않아요...
정말 어렵지 않아요. ^^
오늘은 RxCocoa의 Traits에 대해서 알아보도록 하겠습니다.
1. Driver
* 오류가 발생하지 않습니다. onError가 없다. 단지 방출하지 않는거 뿐입니다.
* observe는 MainScheduler에서 발생하게 됩니다.
Observable에는 당연히 error가 존재하는데 왜 없을수 있는지에 대해서 이야기 드릴게요.
// 이런것은 존재하지 않습니다.
UIButton().rx.controlState()
.asDriver()
.drive(onNext: { state in
}, onCompleted: {
}, onDisposed: {
})
.disposed(by: disposeBag)
// 이렇게 해야합니다.
UIButton().rx.controlState()
.asDriver(onErrorJustReturn: .normal)
.drive(onNext: { state in
}, onCompleted: {
}, onDisposed: {
})
.disposed(by: disposeBag)
error가 발생하게 되면 기본적인 return을 발생하게 하여서 에러를 없애 줍니다.
그럼 저 asDriver(onErrorJustReturn:)은 어떻게 생겼을까...
public func asDriver(onErrorJustReturn: E) -> Driver<E> {
let source = self
.asObservable()
.observeOn(DriverSharingStrategy.scheduler)
.catchErrorJustReturn(onErrorJustReturn)
return Driver(source)
}
내부에서 catchErrorJustReturn을 이용하여서 에러는 없애고 그냥 onNext만 발생하게 만드는군요...
이 부분은 맥락상 맞는것이 UI에 Error의 케이스는 발생하지 않는것이 맞는거 같네요.
RxSwift를 사용하다가 bind에서 낭패를 당하는 일은 없겠네요.
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- Java
- war
- ubuntu
- tomcat
- Gradle
- ios
- intellij
- CentOS
- android
- Codable
- github
- rxswift
- windows10
- Linux
- git
- enum
- Windows
- golang
- Kotlin
- cocoapods
- docker
- go
- centos8
- SWIFT
- MySQL
- nodejs
- Xcode
- Python
- php
- Spring
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함