首页 > 解决方案 > 在组合中将给定的发布者失败类型设置为从不

问题描述

有没有办法将给定的转换AnyPublisher<AnyType, SomeError>AnyPublisher<AnyType, Never>

标签: iosswiftfrpcombine

解决方案


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(),您的应用程序将立即崩溃。


推荐阅读