【发布时间】:2015-04-18 19:13:04
【问题描述】:
我正在使用 alamofire 发出 GET 请求,并尝试使用 SwiftyJSON 转换为 JSON。我可以成功发出请求,但无法将响应转换为可用的 JSON 对象。
我正在尝试从四方场地详细信息响应中获取数据,并使用有关场地的适当信息更新 UITableView(详细信息页面)。 UITableView 有 3 个不同的部分。
这是我的 VenueDetailViewController (UITableViewController) 的 makeRequest 代码。
func makeRequest() {
Alamofire.request(.GET, self.foursquareEndpointURL, parameters: [
"client_id" : self.foursquareClientID,
"client_secret" : self.foursquareClientSecret,
"v" : "20140806"
])
.responseJSON { (request, response, data, error) in
println(request)
println(response)
println(error)
println(data)
if data != nil {
var jsonObj = JSON(data!)
// response is not in the form of an array? I think... thats why data is not setting .. I think "arrayValue" below is incorrect. should be something like dictionaryValue or stringValue
if let obj = jsonObj["response"]["venue"].arrayValue as [JSON]? {
self.responseitems = obj
self.tableView.reloadData()
println("Objis: \(obj)")
}
}
}
}
当我println("Obis: \(obj)") 得到Objis: [] 的控制台输出时,告诉我我从 JSON 响应中获取了错误的数据?这是Foursquare Venue Detail API request 的网址
哦,self.responseitems 是 var responseitems:[JSON] = []
请帮忙!谢谢
【问题讨论】:
-
您将 obj 声明为 Json 数组,尝试访问数组中的一种 JSON 类型。例如:
println(“Objis: \(obj.first)”)这将返回一个可选值,如果有可用项,它将返回数组中的第一项,如果没有可用项,它将返回 nil -
@milo526 你看过我提供的foursquare API 响应链接了吗?鉴于该响应及其结构,我将 obj 声明为数组是否正确?或者我应该将 obj 声明为不同的 SwiftyJSON 类型?请记住 self.responseitems
-
foursquare 场地详情 API 请求不适用于非foursquare 会员。我没有这样的帐户,所以无法看到它,也许您可以上传 API 文档中对您的问题感兴趣的部分的屏幕截图
标签: uitableview swift alamofire swifty-json