【问题标题】:Cannot convert value of type 'DataResponse<Any>' to expected argument type 'Data'无法将“DataResponse<Any>”类型的值转换为预期的参数类型“Data”
【发布时间】:2019-07-08 14:59:46
【问题描述】:

我正在向一个网站发出一个简单的 post 请求,该网站发回如下所示的 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 或任何一个库,所以我真的很想知道我需要做些什么来解决这个问题。

我想提取帐户和密码以存储在单独的变量中。我尝试按照其他教程进行操作,但没有成功。如果有人可以帮助我,我将不胜感激。

【问题讨论】:

    标签: json swift alamofire swifty-json


    【解决方案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!)
    }
    

    【讨论】:

    • 感谢@Sh_Khan,我现在如何使用 SwiftyJson 从“json”中提取帐户和密码?
    • 你能发布预期的响应json结构吗
    • 我的问题中的第一段代码正是 JSON 的样子,只是长随机字符串而不是“blah blah”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    • 1970-01-01
    • 2020-07-16
    • 2020-02-04
    • 2020-02-27
    相关资源
    最近更新 更多