0
我是Swift和iOS开发的新手,无法理解某些东西。我尝试使用Alamofire将JSON解析为UiTableView。但是JSON的响应包含嵌套的url到另一个JSON请求。除此之外,我使用MBProgressHUD进行“Please wait”视图。 当我处理所有JSON响应时,如何隐藏此进度视图?嵌套的JSON解析器
我有解析JSON的下一个代码。
func loadFileList(){
let defaults = NSUserDefaults.standardUserDefaults()
let login = defaults.valueForKey("login") as! String
let password = defaults.valueForKey("password") as! String
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.tableView.reloadData()
}
}
dispatch_async(dispatch_get_main_queue()) {
self.hideHUD()
}
}
}
但是,当HUD隐藏并且数据显示在视图中时,它解析了嵌套的JSON。如何解决它?
P.S或者我该怎么做,没有Alamofire?
但是为什么?我的回应是JSON数组,为什么我必须在完成解析第一个外部JSON的嵌套JSON之后隐藏HUD?例如,我有5个项目在第一个请求的响应和5嵌套。第一次请求的第一个元素和5个项目之后,我必须隐藏HUD?或者我错了? –
当所有数据都返回正确时,您想要关闭HUD吗?我的意思是这是原来的问题。或者你的主要问题是什么? – dirtydanee
是的,你说得对。但是当HUD被解雇时,我在控制台中看到了嵌套请求的名称。所以它应该是? –