2017-10-02 4 views
2

J'ai cherché ce problème et il y a beaucoup de réponses disponibles mais aucune résolution. J'ai paramètres définis comme:Argument supplémentaire 'méthode' dans l'appel de Alamofire

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

Et après que j'envoie la demande:

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

Je reçois un avertissement sur parameters

Expression implicitly coerced from 'String?' to Any

et si je mets ! suivant aux paramètres que je commence à obtenir cette erreur:

Extra argument 'method' in call

La fonction dans laquelle j'ai écrit tout ceci est: func sendLoginCall(username: String, email: String, platform: String). J'ai essayé de remplacer URLEncoding() à JSONEncoding.default cela n'a pas fonctionné.

Je vous appelle c'est la méthode comme ceci:

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

Pouvez-vous ajouter toute fonction 'sendLoginCall'? – the4kman

Répondre

2

Modifier le type parameters-[String : Any] comme suit:

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

Non nécessaire: Supprimer encoding: URLEncoding() d'arguments param, il peut fonctionner sans codage .

Voici la discussion sur la même question et de la résolution par le développeur Alamofire: https://github.com/Alamofire/Alamofire/issues?utf8=%E2%9C%93&q=extra%20argument