【问题标题】:Alamofire 4.0 in swift快速的 Alamofire 4.0
【发布时间】:2019-04-27 12:01:02
【问题描述】:
 Alamofire.request(TWConstants.LoginUrl,
                          method: .post,
                          parameters: param as! [String : String],
                          encoding: JSONEncoding.default,
                          headers: TWNetworkManager.getHeaderUser(username, passwd: passwd) as? [String : String]).responseJSON

这是我的发帖请求。错误如下:

调用中的额外参数“方法”

我正在将我的 Alamofire 版本 3 迁移到 Alamofire 版本 4。我尝试查看文档,但没有任何帮助。有人可以帮我吗?

【问题讨论】:

    标签: ios swift migration alamofire


    【解决方案1】:
            let parameter : [String : Any] = [
                "auth" : [
                    "api_key" : "",
                    "user_token" : "" 
                ],
    
                "mobile" : mobileNoTF.text!
    
            ]
    
            Alamofire.request("https://url", method:.post , parameters : parameter ,encoding: JSONEncoding.default)
                .responseJSON { response in
    
                    DispatchQueue.main.async {
                   }
    
                    if((response.result.value) != nil) {
                        let swiftyJsonVar = JSON(response.result.value!)
    
                        //  self.compalinListArray.removeAll()
    
                        print(swiftyJsonVar)
    
                        if status == "success"
    
                        {
    
    
                        } else if status == "unauthorized"
                        {
    
    
                        }else if status == "error"
                        {
                            //else error
                        }
                    }
            }
    
    
        }else {
           //else error
        }
    

    【讨论】:

      【解决方案2】:

      据此Alamofire issue:

      当一个参数的类型错误并且 Swift 解释器认为你错误地使用了 功能:

      请求(urlRequest: URLRequestConvertible)

      这就是错误提示的原因:

      调用中的额外参数“方法”

      在您的示例中,可选的“param”参数必须是 [String: Any] 类型:

      public typealias Parameters = [String: Any]
      

      【讨论】:

      • Alamofire.request(URLConvertible, method: HTTPMethod, parameters: Parameters?, encoding: ParameterEncoding, headers: HTTPHeaders?) 这是我使用的 POST 请求语法。
      • 是的,Parameters 是公共类型别名 = [String: Any]
      【解决方案3】:

      Swift 4,使用这个

      params = [
                 "username" : "",
                 "password" : "" ]
      
      Alamofire.request(url, method: .post, parameters: params, encoding: URLEncoding.default, headers: nil).responseJSON { (response) in
                  print(response.result.value)
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-20
        相关资源
        最近更新 更多