【问题标题】:Swift 4.2 Alamofire : Extra argument 'method' in callSwift 4.2 Alamofire:调用中的额外参数“方法”
【发布时间】:2019-02-23 18:47:26
【问题描述】:

我已将我的代码更新为 Xcode 10 和 Swift 4.2,我遇到了这个错误。额外的论点。 我尝试了所有可用的解决方案,但它们可能适用于旧版本的 swift。我正在使用 alamofire 版本:Alamofire 4.7.3 这是我的代码:

func callRemoveUserApi() {
        let token = SharedManager.getAuthenticationToken()
        MBProgressHUD.showAdded(to: self.view, animated: true)
        let headers = [
            "token": token
        ]
        let manager = SharedManager.sharedInstance
        let user = manager.getUpCurrentUser()
        var params = [String:String]()
        params  = [
            "id": user.removed_member!.description,
            "userpath":self.selectedUser.userpath!,
            "path":user.path!
        ]


        Alamofire.request(removeMember, method:.put, parameters: params, encoding: JSONEncoder.default, headers: headers).responseJSON { response in
            print("Request  \(String(describing: response.request))")
            print("RESPONSE \(String(describing: response.result.value))")
            print("RESPONSE \(response.result)")
            print("RESPONSE \(response)")
            switch response.result {
            case .success:
                MBProgressHUD.hide(for: self.view, animated: true)
                var tempResponseDict = response.result.value as! NSDictionary
                // var array = tempResponseDict.object(forKey: "data") as! NSArray
                NotificationCenter.default.post(name: Notification.Name("callMatchesApi"), object: nil)
                self.navigationController?.popViewController(animated: true)
                break
            case .failure( _):
                MBProgressHUD.hide(for: self.view, animated: true)
                break

            }
        }
    }

解决方案: 将 JSONEncoder.default 转换为 JSONEncoding.default 和 Alamofire 电话将是。

Alamofire.request(mobileInfo, method:.put, parameters: params, encoding: JSONEncoding.default, headers: headers).responseJSON { response in

【问题讨论】:

  • 我以前遇到过这个问题,我已经将标头作为“HTTPHeaders”类型传递,它对我有用。请试试这个,希望它对你有用。 :)
  • 我正在发送一个字符串标记“jk345l4kl5kl345kl”作为标题。可以显示你的代码。作为答案?
  • 当然,兄弟,我会的。

标签: alamofire xcode10 ios12 swift4.2


【解决方案1】:

标头声明:

 var header : [String:String]?

向页眉添加值:

   header = [AppConstant.Content:AppConstant.ContentType,
                      AppConstant.Authorization : UserDefaults.standard.secretObject(forKey: AppConstant.AuthToken) as! String]

Alamofire 方法:

Alamofire.request(mobileInfo, method:.put, parameters: params, encoding: JSONEncoding.default, headers: headers).responseJSON { response in

希望这对你有用,祝你好运.. :)

【讨论】:

  • 我也在做同样的事情。 let headers = [ "token": token ] .token 值是一个字符串。你能展示一下你是如何在 Alamofire 方法中使用标题的吗?
  • 请试试这个 let headers = [ "token": token as! String] 因为它认为令牌是任意的
  • var headers = [String:String]() headers = [ "token": token ] 我已经把它改成了这个。但我仍然得到相同的 error.extra 参数。
  • 'Alamofire.request(appConstant.WebService_URL+strURL, method: .get, parameters: params, headers: self.header).responseJSON { (responseObject) -> Void in'
  • 尝试传递 : headers as! [String : String ] 或 as! HTTP标头
猜你喜欢
  • 1970-01-01
  • 2017-06-26
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 2018-07-03
  • 2018-08-26
  • 2017-01-22
相关资源
最近更新 更多