额外的论据'方法'致电Alamofire

时间:2017-10-02 11:52:45

标签: ios swift3 parameters 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)。我已经尝试将URLEncoding()替换为JSONEncoding.default它没有用。

我称这是这样的方法:

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

1 个答案:

答案 0 :(得分:2)

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