Я использую общий подход для декодирования JSONresponse, сгенерированного AlamoFire.Моя функция заключается в следующем:
private func fetch<T: Swift.Decodable>(URLRequest: URLRequestConvertible) -> SignalProducer<T, NetworkError> {
return Network.request(URLRequest)
.attemptMap { JSON in
do {
let jsondata = try JSONSerialization.data(withJSONObject: JSON as! [String:Any], options: .prettyPrinted)
return .success(try JSONDecoder().decode(T.self, from: jsondata))
} catch let error {
Logger.shared.error("Error while decoding a JSON", error: error as NSError, userInfo: ["json" : JSON, "urlRequest" : URLRequest.urlRequest!.debugDescription])
return .failure(.incorrectDataReturned)
}
}
}
Для каждого моего запроса я создал структуру, соответствующую протоколу Decodable.
Для одного запроса я не хочу декодировать JSON, потому что его структура сложна, и поскольку мне просто нужно отправить его обратно в другом запросе, я просто хочу сохранить ответ в структуре, например, такойодин:
struct GenericResponse: Swift.Decodable {
let data: Data
}
, где данные - это ответ.Итак, я просто хочу взять ответ и поместить его в структуру без дальнейшего декодирования.
Возможно ли это, не нарушая универсальность моей функции?Есть ли способ создать декодер, который не декодирует, если T.self принадлежит к определенному типу?