在Alamofire的召唤中额外论证’方法’

我已经搜索过这个问题,但有很多答案可供使用,但没有一个可以解决。 我已经将参数定义为:

let parameters = [ "name": username, "mobile": "", "email": email, "password": "", "blood_donor": "0", "registration_id": defaults.string(forKey: "FCMToken"), "platform": platform, "appID": "3" ] 

之后,当我发送请求时:

 Alamofire.request(url, method: .post, parameters: parameters, encoding: URLEncoding(), headers: headers).responseJSON { response in 

所以我收到了关于parameters的警告

隐含地从’String?’强制表达了表达式 去任何

如果我放! 在参数旁边我开始收到此错误:

调用中的额外参数’方法’

我写这篇文章的func sendLoginCall(username: String, email: String, platform: String)是: func sendLoginCall(username: String, email: String, platform: String) 。 我已经尝试将URLEncoding()替换为JSONEncoding.default它不起作用。

我称这是这样的方法:

 if let userName = data["name"], let email = data["email"] { self.sendLoginCall(username: userName as! String, email: email as! String, platform: "fb") } 

parameters类型更改为[String : Any] ,如下所示:

 let parameters = [ "name": username, "mobile": "", "email": email, "password": "", "blood_donor": "0", "registration_id": defaults.string(forKey: "FCMToken"), "platform": platform, "appID": "3" ] as [String : Any] 

没有必要:从param参数中删除encoding: URLEncoding() ,它可以在没有编码的情况下工作。

以下是Alamofire开发人员对同一问题和解决方案的讨论: https : //github.com/Alamofire/Alamofire/issues? utf8 =% E2%9C%93 & q = extra%20argument