func requestWithRetries(tag:String, url:String, maxRetry:Int = 3, expectJSONArray:Bool, completion:@escaping jsonCompletion) {
var headers = [String:String]()
let params = [String:AnyObject]()
let token = "UNVCRDFR5M8BW0P72KU6"
headers["Authorization"] = token
let alamoRequest = alamoFire.request(serviceURL + url, method: .get, parameters: params, encoding: URLEncoding.default, headers: headers) .validate() .responseJSON { response in
// 无法将类型“[String : String]”的值转换为预期的参数类型“HTTPHeaders?”
switch response.result {
case let .success(value):
if let json = response.result.value {
let result = JSON(json) //Value of type 'Result<Any, AFError>' has no member 'value'
if let serverMessage = Utils.stringJSON(result["message"]) {
self.didFail(tag: tag, error: serverMessage, code: nil)
return
}
Utils().saveDebugData(result.description, fileName: tag)
self.didRecieve(tag: tag, result: result)
}
HTTPHeaders
有一个需要字典的 init 方法
...headers: HTTPHeaders(headers)
但是你应该抓住机会重构你的代码
responseDecodable
可以将 JSON 直接反序列化为结构体,responseJSON
无论如何已被弃用。SwiftyJSON
以来,
Codable
已经过时了。Alamofire
说话async/await
。并且
parameters
是 [String:Any]
,而不是 [String:AnyObject]
。