使用 Alamofire + SwiftyJSON 获取 JSON 数组
Posted
技术标签:
【中文标题】使用 Alamofire + SwiftyJSON 获取 JSON 数组【英文标题】:Getting JSON array with Alamofire + SwiftyJSON 【发布时间】:2015-12-03 20:08:14 【问题描述】:我真的是 Swift 新手,抱歉,如果这是一个愚蠢的问题......似乎有很多关于这个的问题,但他们都没有使用最新版本的 Alamofire
Alamofire.request(.GET, url)
.responseJSON response in
let json = JSON(response.data!)
debugPrint(json)
self.delegate?.didReceiveAPIResults(json)
还有委托的didReceiveAPIResults
方法
func didReceiveAPIResults(results: JSON)
dispatch_async(dispatch_get_main_queue(),
self.tableData = results["items"].arrayObject!
self.appsTableView!.reloadData()
)
这是 JSON 响应:
"items": [
"id": 1,
"name": "Sample 1"
,
"id": 2,
"name": "Sample 2"
]
我希望 debugPrint 打印类似于 JSON 的内容,但它只是打印 unknown
如果我自己调试打印response.data
,它似乎被编码...
Optional(<7b226461 7461223a 5b7b2269 64223a36 2c226e61 6d6522......
然后我的results["items"].arrayObject!
行有这个错误:
fatal error: unexpectedly found nil while unwrapping an Optional value
【问题讨论】:
【参考方案1】:与其抢response.data
,我建议抢response.result.value
。当您执行responseJSON
时,Alamofire 会为您解析 JSON,您应该可以随意抓取这个解析的对象。
Alamofire.request(.GET, url)
.responseJSON response in
if let value = response.result.value
let json = JSON(value)
self.delegate?.didReceiveAPIResults(json)
【讨论】:
完美运行,谢谢。现在我在 Alamofire 文档中非常清楚地看到了response.result.value
,我只是以某种方式错过了这一点以上是关于使用 Alamofire + SwiftyJSON 获取 JSON 数组的主要内容,如果未能解决你的问题,请参考以下文章
在 Swift 中将 Alamofire 结果解析为对象(使用:Alamofire、SwiftyJSON 和 ObjectMapper)
swift、Alamofire、SwiftyJSON:如何解析 arrayObject
数据未使用 Alamofire + SwiftyJSON 加载到 UITableView