rra*_*ael 12
具有Neveras 错误类型的发布者意味着它根本不能抛出错误。它将始终提供价值。
要获得永远不会抛出错误的发布者,您有两种解决方案:
1/ 捕捉所有可能的错误:
let publisher: AnyPublisher<AnyType, SomeError> = //...
publisher.catch { error in
// handle the error here. The `catch` operator requires to
// return a "fallback value" as a publisher
return Just(/* ... */) // as an example
}
Run Code Online (Sandbox Code Playgroud)
2/ 如果您确定发布者不会抛出任何错误,则可以使用.assertNoFailure(),这将转换您的发布者。请注意,这是一个错误传递.assertNoFailure(),您的应用程序将立即崩溃。
mat*_*att 11
使用 replaceError运算符。这要求您发出一个 AnyType 值,如果错误从上游到达,该值将从该点向下发送到管道。
例如:
URLSession.shared.dataTaskPublisher(for: url)
.map {$0.data} // *
.replaceError(with: Data()) // *
// ...
Run Code Online (Sandbox Code Playgroud)
从这一点开始,我们保证从数据任务完成或(如果存在网络错误)接收到空数据。从这一点开始,沿管道向下的失败类型是从不。
| 归档时间: |
|
| 查看次数: |
4370 次 |
| 最近记录: |