我是Swift和iOS开发的新手,无法理解。我尝试用Alamofire解析JSON到UiTableView。但JSON的响应包含另一个JSON请求的嵌套URL。除此之外,我使用了MBProgressHUD用于"请等待"视图。 当我处理所有JSON响应时,如何隐藏此进度视图?
我有解析JSON的下一个代码。
\lo_export oid-to-export /path/to/a/file
但是,当HUD隐藏并且数据显示在视图中时,它解析了嵌套的JSON。怎么解决?
P.S 或者如果没有Alamofire我该怎么做?
答案 0 :(得分:0)
当第一个json返回时,你会关闭HUD。
要隐藏HUD,当所有JSON都返回时,您只需稍微重新排列代码:
Alamofire.request(.GET, Links.apiUrl)
.authenticate(user: login, password: password)
.responseJSON { response in
let json = SwiftyJSON.JSON(response.result.value!)
for (_, value):(String, SwiftyJSON.JSON) in json {
let file: CacheFile! = CacheFile(filename: value["name"].string!, preview: value["preview"].string!, id: value["id"].string!)
print (file.filename)
dispatch_async(dispatch_get_main_queue(), {
self.fileList.append(file)
self.tableView.reloadData()
})
Alamofire.request(.GET, file.layoutURL)
.authenticate(user: login, password: password)
.responseJSON{ responseLayout in
let jsonLayout = SwiftyJSON.JSON(responseLayout.result.value!)
let layoutsArray = jsonLayout["layouts"]
for (_, layoutObj):(String, SwiftyJSON.JSON) in layoutsArray{
let alias = layoutObj["alias"].string!
let layoutFile: Layout! = Layout(name: layoutObj["name"].string!, alias: Int(alias))
print (layoutFile.name)
file.addLayout(layoutFile)
}
dispatch_async(dispatch_get_main_queue()) {
self.hideHUD()
self.tableView.reloadData()
}
}
}
}
基本上,您需要将self.hideHUD调用包装在第二个JSON调用的完成标头中。