我有一个POST请求,如下所示。我需要一些关于如何使用响应数据的帮助。我得到的回应是字典的形式。在这里使用的最佳做法是什么?我得到的错误信息是:
无法将“DataResponse”类型的值指定为“String”
类型
func getRequest(){
let urlString = "http://scissors.pythonanywhere.com/getRequest"
Alamofire.request(urlString, method: .post, parameters: ["date": self.weekDays[self.itemSelectedIndex]],encoding: JSONEncoding.default, headers: nil).responseString {
response in
switch response.result {
case .success:
print(response)
var backToString = String(data: response, encoding: String.Encoding.utf8) as String?
break
case .failure(let error):
print(error)
}
}
}
我试过了self.bookings = response as! String
,但它给了我一个警告,说它会失败。还尝试了这个:Alamofire in Swift: converting response data in usable JSON dictionary没有运气。
修改
这是我从回复中获得的印刷品。
SUCCESS: {
"10:00" = {
booked = false;
name = "";
number = "";
};
"10:30" = {
booked = false;
name = "";
number = "";
};
"11:00" = {
booked = false;
name = "";
number = "";
};
}
答案 0 :(得分:0)
既然您拥有JSON表示,那么您应该可以执行以下操作:
if let dict = response as? [String:Any]{
if let obj = dict["10:00"] as? [String:Any]{
let booked = obj["booked"] as? Bool ?? false
print("booked: \(booked)");
}
}
答案 1 :(得分:0)
我实际上最终使用了这种非常简单易用的方法。在我的情况下,预订被声明为:var bookings: NSDictionary = [:]
func getRequest(){
let urlString = "http://scissors.pythonanywhere.com/getRequest"
Alamofire.request(urlString, method: .post, parameters: ["date": self.weekDays[self.itemSelectedIndex]],encoding: JSONEncoding.default, headers: nil).responseJSON {
response in
switch response.result {
case .success(let JSON):
self.bookings = JSON as! NSDictionary
self.tableView.reloadData()
break
case .failure(let error):
print(error)
}
}
}
答案 2 :(得分:0)
尝试
import SwiftyJSON
let json = JSON(response.result.value)