티스토리 뷰

이전에 RxSwift의 Traits에 대해서 알아보았습니다.

2019/08/09 - [Program/iOS] - iOS. RxSwift Traits에 관하여 알아봅시다. 어렵지 않아요...

 

iOS. RxSwift Traits에 관하여 알아봅시다. 어렵지 않아요...

사전적인 의미로는 특성이라는 것으로 정의가 되어 있는데요. 쉽게 Rx의 흐름을 방출시킬수 있는 방법을 정의 하는 부분입니다. 가볍게 봐주셔도 됩니다. 거의 모든 분들은 그냥 Observable.create를 사용하여도..

mrgamza.tistory.com

정말 어렵지 않아요. ^^

 

오늘은 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
«   2024/05   »
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
글 보관함