我正在迁移使用Alamofire的旧方法,其中具有这样的功能:
protocol httpRequestSwiftDelegate {
func httpRequestSwiftError(_ error: NSError, tag: Int)
func httpRequestSwiftResponse(_ response: JSON, tag: Int)
}
class httpRequestSwift {
func requestURL(method: HTTPMethod, url : String, params: [String: String], tag: Int)
}
然后,我将响应或错误委托给调用它的控制器。
现在,我想使用Alamofire 5,并利用“可解码”和“可编码”功能,因此在定义参数时遇到了问题。
在我看来应该像这样:
func requestURL(method: HTTPMethod, url : String, params: Encodable, decodable: Decodable, tag: Int) {
session.request(keychain.string(forKey: K.Api.baseUrl)! + url, method: method, parameters: params)
}
但出现错误:
协议类型“可编码”的值不能符合“可编码”;只有struct / enum / class类型可以符合协议]
谢谢。
func requestURL<Parameters, Response>(method: HTTPMethod, url : String, params: Parameters, decodable: Response, tag: Int)
where Parameters: Encodable, Response: Decodable