Étant donné le code suivant :
enum MyError: Error {
case someError
}
myButton.publisher(for: .touchUpInside).tryMap({ _ in
if Bool.random() {
throw MyError.someError
} else {
return "we're in the else case"
}
})
.replaceError(with: "replaced Error")
.sink(receiveCompletion: { (completed) in
print(completed)
}, receiveValue: { (sadf) in
print(sadf)
}).store(in: &cancellables)
Chaque fois que j'appuie sur le bouton, j'obtiens we're in the else case
jusqu'à Bool.random()
est vrai - maintenant une erreur est déclenchée. J'ai essayé différentes choses, mais je n'ai pas réussi à attraper/remplacer/ignorer l'erreur et à continuer après avoir appuyé sur le bouton.
Dans l'exemple de code, j'aimerais avoir par exemple la sortie suivante
we're in the else case
we're in the else case
replaced Error
we're in the else case
...
Au lieu de cela, j'obtiens finished
après le replaced error
et aucun événement n'est émis.
Modifier Étant donné un éditeur avec AnyPublisher<String, Error>
comment puis-je le transformer en un AnyPublisher<String, Never>
sans terminer lorsqu'une erreur se produit, c'est-à-dire ignorer les erreurs émises par l'éditeur original ?