我正在嘗試從for循環中的多個GET請求中下載數據,然後將其添加到表視圖中。 我成功地獲取數據,但遇到的問題是主線程在所有數據從請求中下載之前一直運行,因此它不會加載到表視圖中。 我想使用信號量一次嘗試運行一個線程,但它似乎並沒有工作。 下面是代碼:(Swift)在for循環中使用帶NSURLSession的信號量
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()
如何讓這個我可以刷新我的tableview一旦所有來自請求的數據下載完畢?
如果我想按順序運行它們,該怎麼辦? – Timeless
然後你應該使用Semaphore作爲上面的示例 – Terence