Я пытаюсь декодировать загруженный 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()
}
Однако, если обработка не удалась, я хотел бы, чтобы вы вернули информацию о том, была ли неудача обработки запроса или декодированиеобработка не удалась. Поэтому я определил перечисление FailureReason
, соответствующее протоколу Error
, следующим образом.
enum FailureReason : Error {
case sessionFailed(error: URLError)
case decodingFailed
}
static func request(url: URL) -> AnyPublisher<SomeDecodableStruct, FailureReason> {
// ???
}
Как определить request(url:)
, который удовлетворяет этому FailureReason
?