2016-09-19 2 views
28

Ошибка при вызове метода запроса Alamofire в последней версии (4.0.0).Дополнительный аргумент 'метод' при вызове

синтаксис:

Alamofire.request(urlString,method: .post, parameters: requestParams, encoding: .JSON, headers: [:]) 

тип requestParam является [String: Любой]

+0

ли вы попробовать: 'Alamofire.request (urlString, метод: .POST, параметры: requestParams, кодирование: .JSON, заголовки: [:])' – netigger

+0

Да, именно там я думаю iIhave пропустил, что в пишущий синтаксис кода. Я исправляю это. – Seema

ответ

42

я получил вопрос, я должен использовать JSONEncoding.default вместо .JSON, так что новый синтаксис

Alamofire.request(urlString,method: .post, parameters: requestParams, encoding: JSONEncoding.default, headers: [:]) 
+1

Не исправлено для меня, я написал для него тот же код :( –

+3

Теперь он дает аргумент метода post –

23

Я могу только отослать Вас к: https://github.com/Alamofire/Alamofire/issues/1508#issuecomment-246207682

В принципе, если один из ваших параметров из неправильный тип, быстрый компилятор предположит, что вы используете request(urlRequest:URLRequestConvertible), а затем method является extra argument

Подойдите, что снова параметры и убедитесь, что все правильного типа (Parameters?, ParameterEncoding и HTTPHeaders)

+1

Спасибо, я получил вопрос значение ParameterEncoding было неправильно, я должен использовать JSONEncoding.default вместо .JSON. – Seema

+1

Это то, что вызвало это для меня, я использовал параметры как строку вместо [String: String] – yehyatt

+0

Ваше объяснение - то, что нужно людям. не глупый ответ, «сделай это ...», спасибо! – TheFuquan

4

Я исправил это, гарантируя, что мои requestUrls являются строками, а не типами URL. Также я удалил аргументы параметров, когда параметр был равен нулю.

E.g.

Alamofire.request(requestUrl, method: .get, encoding: URLEncoding.default)

3

методы Almofire изменены в Swift 3 как следующие:

  1. параметры Reorder (URL затем метод типа).
  2. Изменить кодировку Enum как «JSONEncoding.default», например.
2

Это семейство функций, которые очень похожи, что заставляет компилятор думать, что вы пытаетесь использовать другую функцию. Дважды проверьте, что ВСЕ аргументы, которые вы поставляете, являются ПРАВИЛЬНЫМ ТИПОМ, который ожидается. Например, я передавал [String: Any] вариант с заголовками, который ожидал [String: String] и получил ту же ошибку.

+0

Это правильно. Я в моем случае, я передавал параметр [String] вместо [String: String] и получил такая же ошибка тоже – mourodrigo

2

Это означает, что некоторые из типов параметров неверны, убедитесь, что вы отправляете эти значения:

url: String 
method: HTTPMethod (E.g: .post) 
parameters: [String:Any] 
encoding: ParameterEncoding (E.g: JSONEncoding.default) 
headers: [String: String] 
5

Обновленные для Swift 3:

let requestString = "https://thawing-inlet-46474.herokuapp.com/charge.php" 
     let params = ["stripeToken": token.tokenId, "amount": "200", "currency": "usd", "description": "testRun"] 

     Alamofire.request(requestString,method: .post, parameters: params, encoding: JSONEncoding.default, headers: [:]).responseJSON { (response:DataResponse<Any>) in 

      switch(response.result) { 
      case .success(_): 
       if response.result.value != nil{ 
        print("response : \(response.result.value)") 
       } 
       break 

      case .failure(_): 
       print("Failure : \(response.result.error)") 
       break 

      } 
     } 
3

Убедитесь, что ваш parameters является [String: Любой]

т.е.

let parameters = ["foo": "bar"] 

Не:

let parameters : Parameter = ["foo": "bar"] 
+0

Это была моя ошибка, я предположил, что это может быть '[AnyHashable: Any]'. –

1

Моя проблема была в необязательных параметров в заголовках, которые не были распакованных.

1

Это всегда, потому что им с помощью дополнительных переменных в любой из параметров

+0

Я решил проблему с этим подсказкой ... Отлично ... Спасибо –

3

У меня была такая же проблема, проблема заключается в типе параметров, он должен быть типа [String: Любой]. После того, как я сделал это изменение, это сработало для меня.

Alamofire.request(youUrl, method: .post, parameters: param as? [String: Any], encoding: JSONEncoding.default, headers: [:]) 
       .responseJSON { response in 
+0

Да, Некоторое время нам нужно определить пары. –

Смежные вопросы