【发布时间】:2017-07-12 16:02:33
【问题描述】:
我目前正在尝试从 for 循环中的多个 GET 请求中下载数据,然后将其添加到表视图中。 我成功地获取了数据,但我遇到的问题是主线程在从请求中下载所有数据之前一直在运行,因此它没有加载到表视图中。 我正在尝试使用信号量尝试一次运行一个线程,但它似乎不起作用。 代码如下:
for item in array{
let http = item["http"] as! String
let URL = NSURL(string: http)
let Request = NSMutableURLRequest(url: URL! as URL)
Request.setValue(self.headerVal, forHTTPHeaderField: "Authorization")
Request.httpMethod = "GET"
let UrlSession = URLSession.shared
let Info = UrlSession.dataTask(with: Request as URLRequest) { (data, response, error) -> Void in
if error != nil{
print(error!)
return;
}
else{
do{
let ResponseData = try JSONSerialization.jsonObject(with: data!) as! [String:Any]
guard let results = ResponseData["data"] as? [Any] else {
print("Couldnt get response from \(http)")
return
}
let Result = results[0] as! [String:Any]
self.result.append(Result)
}
catch{
print(error)
}
}
}
Info.resume()
}
print("finished")
self.tableView.reloadData()
如何在请求中的所有数据下载完成后刷新表格视图?
【问题讨论】:
标签: ios swift semaphore nsurlsession