【发布时间】:2017-04-12 12:02:14
【问题描述】:
我正在使用这个 Alamofire 请求并返回一个 json
let todoEndpoint: String = "https://api.abc.com/api/v3/products?pid=uid8225&format=json&&offset=0&limit=10"
Alamofire.request(todoEndpoint)
.responseJSON { response in
guard let json = response.result.value as? [String: Any] else {
print("didn't get todo object as JSON from API")
print("Error: \(response.result.error)")
return
}
print(json)
}
现在我有循环,我想使用这个 json 值,但我得到了:
错误:使用未解析的标识符 json?
do {
for (index,subJson):(String, JSON) in json {
print("Index :\(index) Title: \(subJson)" )
} catch
{
print("there was an error")
}
如前所述:
https://github.com/Alamofire/Alamofire#response-string-handler " 请求的结果仅在响应闭包的范围内可用。任何取决于从服务器接收到的响应或数据的执行都必须在响应闭包内完成。"
如何在响应闭包范围之外使用这个 json 值?
你能推荐一下吗
是否有任何我需要编写的完成处理程序以及如何完成?
谢谢
【问题讨论】:
-
GS,您是否尝试搜索解决方案,因为这个问题已经被问到超过 30 多个线程:google.se/…
-
你
do块应该在警卫之后运行,即guard let else {...} HERE。目前,您在json不存在的范围内进行操作 -
嗨亲爱的,感谢您的回复,如果我在范围内使用,那么请建议我在解析所有 json 值后是否可以在其他地方使用这些值,例如
-
我有 items.append(name:name1) 并且这些值需要在不同的类中使用,例如 cell.titleLabel1.text = item.name1 ,因为我在循环中尝试过,但我没有能够获取值
标签: swift3