我的应用程序基础架构中有 2 个主要部分。
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,来自:Data)。需要类型的参数列表(T.Type,来自:Data)。
任何帮助,将不胜感激