我正在尝试使用以下代码将下载的 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?