Метод дополнительных аргументов Alamofire v4 при ошибке вызова

#ios #swift #xcode #alamofire

#iOS #swift #xcode #alamofire

Вопрос:

Как только я обновился до версии alamofire 4, я получаю сообщение об ошибке: метод дополнительного аргумента при вызове

 Alamofire.request("www.blabla", method: .put, parameters: parameters, headers: headers, encoding: .JSON)
  

Я уже изменил его, чтобы использовать «метод: .put», как указано выше, но я все равно получаю ошибку

Ответ №1:

У меня возникла эта проблема при обновлении до Alamofire 4, и я решил ее, переместив аргумент headers и сделав его последним аргументом в вызове. Также encoding: .JSON должно быть encoding: JSONEncoding.default .

Вызов должен выглядеть следующим образом:

 Alamofire.request(url: myUrl, method: .put, parameters: myParams,
     encoding: JSONEncoding.default, headers: myHeaders)
  

Комментарии:

1. Я попытался переключить его на: Alamofire.request(url: «www.blabla «, метод: .post, параметры: параметры, кодировка: .JSON, заголовки: заголовки), но я все равно получаю ошибку : /

2. Для кодирования замените .JSON на JSONEncoding.default . Оригинальный ответ обновлен.

3. Но я все равно получаю: использование неразрешенного идентификатора JSONEnconding при использовании Alamofire.request(«www.myUrl «, метод: .post, параметры: parameters, кодировка: JSONEnconding.default, заголовки: headers) .responseJSON()

4. О, в вашем ответе была опечатка, я не видел JSONEncoding / JSONEnconding

Ответ №2:

Какой тип parameters ? Он должен быть как минимум [:] похожим:

Alamofire.request(url: myUrl, method: .put, parameters: [:], encoding: JSONEnconding.default, headers: myHeaders)

Комментарии:

1. Вот так: пусть параметры: [Строка: AnyObject]

2. Но я все равно получаю: использование неразрешенного идентификатора JSONEnconding при использовании Alamofire.request(«www.myUrl «, метод: .post, параметры: parameters, кодировка: JSONEnconding.default, заголовки: headers) .responseJSON()

3. О, в вашем ответе была опечатка, я не видел JSONEncoding / JSONEnconding

Ответ №3:

Я перешел к URLRequest, а затем просто к вызову Alamofire. Ничего, что я нашел, не сработало, кроме как разбить его. Я использую Swift 3 и XCode 8.2.1, и я считаю, что это SourceKit swift, который неправильно определяет объект.

это

     Alamofire.request(url:treeURL!, method: .get, parameters: [:], encoding: JSONEncoding.default, headers: ["Authorization" : app.getToken()])
  

стало так:

     var request = URLRequest(url: treeURL!)
    request.httpMethod = "GET"
    request.allHTTPHeaderFields = ["Authorization" : app.getToken()]
    Alamofire.request(request as URLRequestConvertible)
  

Ответ №4:

 Alamofire.request( "http://....", method: .put , parameters: parameters, encoding:  JSONEncoding.default).responseJSON{
            response in
            if response.result.isSuccess {
                //some code
            }
        }
  

Комментарии:

1. Это не помогает.