μ λ€λ¦ ꡬ쑰체 | νΉμ μ€ν¨ νμ
μ μ λ¬νλ κ²μ²λΌ 보μ΄λ Publisher
μ΄λμ
λΌμ΄μ λ ν κ°μ μΈμλ₯Ό λ°λλ€.
upstream : μμμ νλ₯΄λ Publisher
μμ Publisherμ μλ¬ νμ
μ Neverμ΄λ©°, ν΄λΉ Publisherμ μλ¬ νμ
μ Error νλ‘ν μ½μ μ±νν΄μΌ νλ€.
μ΄λ μ€μ λ‘ νΉμ νμ
μ μλ¬λ₯Ό λ΄μ§λ μκ³ μ μμ μΌλ‘ μ’
λ£νμ§λ§, λ€λ₯Έ μλ¬ νμ
μ΄ λ§μ§ μλ Publisherμ ν¨κ» λμνκΈ° μν΄ μλ¬μ νμ
μ μΌμΉμν€κΈ° μν΄ μ¬μ©ν μ μλ€.
μλ₯Ό λ€μ΄ 1λ² Publisherκ° μλ¬λ₯Ό λ΄μ§ μκ³ (μλ¬μ νμ
μ΄ Never) 2λ² Publisherκ° μλ¬λ₯Ό λ΄λλ° λ κ°μ Publisherλ₯Ό μ‘°ν©ν΄μΌ νλ€λ©΄ 1λ² Publisherκ° 2λ² Publisherμ μλ¬ νμ
μ μλ¬λ₯Ό λ΄λ κ²μ²λΌ νλνλλ‘ νμ¬ νμ
μ λ§μΆμ΄ μ£Όμ΄μΌ ν νμκ° μμ κ²μ΄λ€.
μ΄ λ ν΄λΉ Publisherλ₯Ό μ¬μ©νμ¬ μ€μ λ‘ νΉμ νμ
μ μλ¬λ₯Ό λ΄μ§λ μμ§λ§ μλ¬μ νμ
μ λ§μΆ°μ€ μ μλ€.
setFailureType μ€νΌλ μ΄ν°μ κ΄λ ¨μ΄ μλ€.
// Publishers.SetFailureType Publisher
Just(Void())
.setFailureType(to: Error.self)
.combineLatest(Fail<Void, Error>(error: error))
.sink(receiveCompletion: { completion in
switch completion {
case .failure:
print("Combine SetFailureType Error")
case .finished:
print("Combine SetFailureType Finish")
}
}, receiveValue: { _ in
print("Combine SetFailureType")
})
.store(in: &cancellables)
// setFailureType Operator
Publishers.SetFailureType<Just<Void>, Error>(upstream: Just(Void()))
.combineLatest(Fail<Void, Error>(error: error))
.sink(receiveCompletion: { completion in
switch completion {
case .failure:
print("Combine SetFailureType Error")
case .finished:
print("Combine SetFailureType Finish")
}
}, receiveValue: { _ in
print("Combine SetFailureType")
})
.store(in: &cancellables)
// Combine SetFailureType Error
Just Publisherλ μλ¬λ₯Ό λ΄μ§ μλ Publisherμ΄μ§λ§ Fail Publisherμ μ‘°ν©νκΈ° μν΄ Fail Publisherμ μλ¬ νμ
μΈ Error νμ
μ μλ¬λ‘ νμ
μ λ§μΆκΈ° μν΄ setFailureTypeμ΄ μꡬνλ μλ¬μ νμ
μ Error.selfλ₯Ό λͺ
μν΄ μ£Όμλ€.
μ΄λ₯Ό ν΅ν΄ Just Publisherμ Fail Publisherλ μ‘°ν©μ΄ κ°λ₯νκ² λμλ€.
μ½λ μ€ν κ²°κ³Όλ‘, Fail Publisherκ° λ΄λ μλ¬κ° μ²λ¦¬λμ§ μμκΈ° λλ¬Έμ μ‘°ν©λ Publisherλ μλ¬λ₯Ό λ΄κ² λλ€.
Observableμ΄ μλ¬μ νμ
μ μꡬνμ§ μμΌλ―λ‘ μ΄λ¬ν λμμ ꡬνν νμκ° μκ³ , ꡬνλμ΄ μμ§λ μλ€.
promoteError μ€νΌλ μ΄ν°λ₯Ό μ¬μ©νμ¬ κ΅¬νν μ μλ€.