Publishers.MapError
์ ๋ค๋ฆญ ๊ตฌ์กฐ์ฒด | ์์์ ํ๋ฅด๋ Publisher์ ์ด๋ ํ ์คํจ๋ฅผ ์๋ก์ด ์๋ฌ๋ก ๋ณํํ๋ Publisher
์ด๋์ ๋ผ์ด์ ๋ ๋ ๊ฐ์ ์ธ์๋ฅผ ๋ฐ๋๋ค.
upstream
: ์์์ ํ๋ฅด๋ Publishertransform
: ์์์ ํ๋ฅด๋ Publisher์ ์คํจ๋ฅผ ์๋ก์ด ์๋ฌ๋ก ๋ณํํ๋ ํด๋ก์
upstream
Publisher์ ์๋ฌ ํ์
์ Error
๋ค.
์๋ฌ๋ฅผ ๋ณํํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค. ์๋ฌ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ์๋๋ฏ๋ก ์์์ ํ๋ฅด๋ Publisher๊ฐ ์๋ฌ๋ฅผ ๋ด๊ณ ๋ณ๋์ ์๋ฌ ์ฒ๋ฆฌ ์์ ์ด ์๋ค๋ฉด ์๋ฌ๋ฅผ ๋ด๋ฉฐ ์ข ๋ฃํ๊ฒ ๋๋ค.
mapError
์คํผ๋ ์ดํฐ์ ๊ด๋ จ์ด ์๋ค.
// Publishers.MapError Publisher
Publishers.MapError(upstream: Fail<Void, NSError>(error: error), { $0 as Error })
.sink(receiveCompletion: { completion in
switch completion {
case .failure:
print("Combine MapError Error")
case .finished:
print("Combine MapError Finish")
}
}, receiveValue: {
print("Combine MapError")
})
.store(in: &cancellables)
// mapError Operator
Fail(error: error)
.mapError { $0 as Error }
.sink(receiveCompletion: { completion in
switch completion {
case .failure:
print("Combine MapError Error")
case .finished:
print("Combine MapError Finish")
}
}, receiveValue: {
print("Combine MapError")
})
.store(in: &cancellables)
// Combine MapError Error
๋ ์ฝ๋ ๋ชจ๋ ์์ Publisher๋ก NSError
๊ฐ์ฒด๋ฅผ ๋ฐ๋ Fail
Publisher๋ฅผ ์ฌ์ฉํ์๋ค.
$0 as Error
๋ฅผ ํตํด NSError
ํ์
์ด Error
ํ์
์ผ๋ก ๋งคํ๋๋ค.
์์์ ํ๋ฅด๋ Publisher๊ฐ ์๋ฌ๋ฅผ ๋ด๋ฏ๋ก ๊ฒฐ๊ณผ์ ์ผ๋ก ์๋ฌ๋ฅผ ๋ด๋ฉฐ ์ข ๋ฃํ๋ค.
RxSwift
๋ด๋ถ์ ์ผ๋ก ์๋ฌ์ ํ์
์ผ๋ก Error
๋ฅผ ๋
ธ์ถํ๋ฏ๋ก mapError
์ ๊ฐ์ด ์๋ฌ์ ํ์
์ ๋ณํํ๋ ์คํผ๋ ์ดํฐ๋ฅผ ์ ๊ณตํ์ง ์๋๋ค.
Observable<Void>.error(error)
.subscribe(onNext: {
print("RxSwift MapError")
}, onError: { _ in
print("RxSwift MapError Error")
}, onCompleted: {
print("RxSwift MapError Finish")
})
.disposed(by: disposeBag)
// RxSwift MapError Error
ReactiveSwift
mapError
์คํผ๋ ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํํ ์ ์๋ค.
SignalProducer<Void, NSError>(error: error)
.mapError { $0 as Error }
.start { event in
switch event {
case .value:
print("ReactiveSwift MapError")
case .failed:
print("ReactiveSwift MapError Error")
case .completed:
print("ReactiveSwift MapError Finish")
default:
break
}
}
Last updated
Was this helpful?