小编oma*_*yao的帖子

在Combine 中处理错误的最佳方法是什么?

我正在尝试使用以下代码将下载的 JSON 解码为结构。

static func request(url: URL) -> AnyPublisher<SomeDecodableStruct, Error> {
    return URLSession.shared.dataTaskPublisher(for: url)
        .map { $0.data }
        .decode(type: SomeDecodableStruct.self, decoder: JSONDecoder())
        .eraseToAnyPublisher()
}
Run Code Online (Sandbox Code Playgroud)

但是,如果处理失败,我希望您返回有关请求处理失败或解码处理失败的信息。因此,我将FailureReason符合Error协议的enum定义如下。

enum FailureReason : Error {
    case sessionFailed(error: URLError)
    case decodingFailed
}

static func request(url: URL) -> AnyPublisher<SomeDecodableStruct, FailureReason> {
    // ???
}
Run Code Online (Sandbox Code Playgroud)

我如何定义request(url:)满足这一点的FailureReason

swift swiftui combine

5
推荐指数
1
解决办法
4449
查看次数

标签 统计

combine ×1

swift ×1

swiftui ×1