У меня есть две основные части в инфраструктуре моего приложения.
NetworkingManager
NetworkRequest
Моя цель состоит в том, чтобы запрос удерживал его Codable
Type
, поэтому, когда сеть завершена, слой Manager
может создавать новыеэкземпляр с правильным типом, используя
decode<T>(_ type: T.Type, from data: Data) throws -> T where T : Decodable
, поэтому мой NetworkRequest
выглядит так
class NetworkRequest {
var objectClass:Codable.Type
}
Допустим, у меня есть класс Person
, который соответствуетCodable
class Person : Codable {
var name:String?
}
теперь мне нужно присвоить тип в запросе так (безобразно, чтобы добраться до сути здесь)
let request = NetworkingRequest()
request.objectClass = Person.self
теперь, когда я хочуNetworkingManager
для декодирования ответа я использую его так:
JSONDecoder().decode(type:request.objectClass, data:dataFromService)
проблема в том, когда я делаю так, я получаю эту ошибку:
Невозможно вызвать декодирование со списком аргументов типа(Decodable.Type, from: Data).Ожидаемый список аргументов типа (T.Type, from: Data).
любая помощь будет оценена