Swift可编码参数和可解码响应

问题描述 投票:0回答:1

我正在迁移使用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类型可以符合协议]

谢谢。

swift alamofire decodable encodable
1个回答
0
投票
您将需要类似的东西

func requestURL<Parameters, Response>(method: HTTPMethod, url : String, params: Parameters, decodable: Response, tag: Int) where Parameters: Encodable, Response: Decodable

© www.soinside.com 2019 - 2024. All rights reserved.