无法将类型“ DataResponse <Any>”的值转换为预期的参数类型“ Data”

时间:2019-07-08 14:59:46

标签: json swift alamofire swifty-json

我正在向网站发送一个简单的发布请求,该网站发送回如下所示的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 个答案:

答案 0 :(得分:1)

您需要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!)
}