ios - 在组合中将给定的发布者失败类型设置为从不
问题描述
有没有办法将给定的转换AnyPublisher<AnyType, SomeError>
为AnyPublisher<AnyType, Never>
?
解决方案
as 错误类型的发布Never
者意味着它根本不会抛出错误。它将始终提供价值。
要获得永远不会抛出错误的发布者,您有 2 个解决方案:
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
}
2/ 如果您确定发布者不会抛出任何错误,您可以使用.assertNoFailure()
,这将转换您的发布者。请注意,这是一个错误传递.assertNoFailure()
,您的应用程序将立即崩溃。