首页 > 解决方案 > Swift Combine 从 func 返回 Publisher

问题描述

如果函数的输入参数有错误,我想返回发布者,但它给出了一些编译错误。

下面是相同的功能。

func fetchList(input: String) -> AnyPublisher<List, Error> {
    guard let url = URL(string: input)  else {            
        return AnyPublisher(URLError(.cannotParseResponse))
    }
    //some call for to get the List which returns publisher
}

错误

Cannot invoke initializer for type 'AnyPublisher<_, _>' with an argument list of type '(URLError)'

概括

如何创建我们的发布者来返回错误?

感谢您提供正确方向的任何提示。

标签: swiftcombinepublisher

解决方案


AnyPublisher需要 aPublisher作为其初始化参数,而您正在给它URLError. 您可能的意思是说“我想要一个立即发布错误的发布者”。为此,您使用Fail发布者:

return AnyPublisher(
    Fail<List, Error>(error: URLError(.cannotParseResponse))
)

推荐阅读