Не удалось преобразовать значение типа «DataResponse <Any>» в ожидаемый тип аргумента «Данные» - PullRequest
0 голосов
/ 08 июля 2019

Я делаю простой почтовый запрос на сайт, который отправляет обратно JSON, который выглядит примерно так:

{
    Account = "blah blah";
    Password = "blah blah";
}

Это запрос.

@IBAction func submitButtonClicked(_ sender: Any){
                AF.request("https://companywebsite.com", method: .post, parameters: parameters, encoding:JSONEncoding.default)
                .responseJSON{ response in
                    let json = try? JSON(data: response)
                }
}

Я получаю следующую ошибку компиляции:

Cannot convert value of type 'DataResponse<Any>' to expected argument type 'Data'

Я использую Alamofire для отправки запроса и SwiftyJSON для его анализа. Я никогда раньше не пользовался Swift или какой-либо другой библиотекой, поэтому я действительно пытаюсь понять, что мне нужно сделать, чтобы это исправить.

Я хочу вытащить учетную запись и пароль для хранения в отдельных переменных. Я пытался следовать другим учебникам, но у меня не было успеха. Если бы кто-нибудь мог мне помочь, я бы это очень оценил.

1 Ответ

1 голос
/ 08 июля 2019

Вам нужно responseData вместо responseJSON

AF.request("https://companywebsite.com", method: .post, parameters: parameters, encoding:JSONEncoding.default)
            .responseData { response in 
   guard let data = response.data else { return }  
   let json = try? JSON(data:data)
   if let acc = json?["Account"].string {
     print(acc)
   }
   if let pass = json?["Password"].string {
     print(pass)
   }
}

Другой вариант

Alamofire.request("https://companywebsite.com", method: .post, parameters: [:], encoding:JSONEncoding.default)
    .responseJSON { response in
    let json = try? JSON(response.result.value!)
}
...