Alamo Fire 和 Swift 无法将类型“[String : String]”的值转换为预期参数类型“HTTPHeaders?”

问题描述 投票:0回答:1
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)
            }
swift xcode
1个回答
1
投票

HTTPHeaders
有一个需要字典的 init 方法

...headers: HTTPHeaders(headers)

但是你应该抓住机会重构你的代码

  • responseDecodable
    可以将 JSON 直接反序列化为结构体,
    responseJSON
    无论如何已被弃用。
  • 自从 Swift 4 中引入
  • SwiftyJSON
     以来,
    Codable
    已经过时了。
  • Alamofire
    说话
    async/await

并且

parameters
[String:Any]
,而不是
[String:AnyObject]

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