我使用Alamofire和SwiftyJson从服务器解析JSON。我在tableView中显示它然后当我点击一行时,我在网络上打开一个链接。
但是我在解析数组时遇到了麻烦。
array`[
{
"title": " ",
"likes": 0,
"post_id": 60050,
"image": "",
"image1": "",
"image2": "",
"data": "",
"arguments": [
"link",
"url"
],
"provider": "custom",
"price": " usd",
"desc": "",
"shop": ""
},`
我的要求:
Alamofire.request("").responseJSON(completionHandler: { response in
if ((response.result.value) != nil) {
let swifts = JSON(response.result.value!)
if let resData = swifts.arrayObject{
}
self.dataTable = resData as! [[String:AnyObject]]
}
这显示文字:
cell.titleLabel.text = indexData["arguments "] as? String
但加载后,我有错误:
Swift._SwiftDeferredNSArray 0x600000228cc0>( url
答案 0 :(得分:0)
尝试像那样解析它
let array = swifts["arguments"].arrayValue
for item in array
{
print(item)
}
答案 1 :(得分:0)
在这里,我假设你完全得到API的回应。现在解析这样的数据。
创建全局变量var arrData : [Any] = []
现在打电话给api&得到这样的数据。
if ((response.result.value) != nil) {
self.arrData = (response.result.value) // here your all response in arrData.
self.tblView.reloadData() // reload tableview
}
else{
// you didn't get the data
}
现在在TableView DataSource
在numberOfRowsInSection
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return arrData.count
}
在cellForRow
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "your_cell_id") as! YourCell
let aDictValue = arrData[indexPath.row] as? [String : Any]
cell.labelTitle.text = aDictValue["title"] as! String
cell.labelProvider.text = aDictValue["provider"] as! String
// set your data like this.
return cell
}
如果还有任何问题,那么你可以问。