我有這2個要求重新加載表視圖之前完成(表視圖取決於他們兩個)。重新加載表視圖之前完成了兩個服務器請求
我試過像下面這樣,但它不起作用。
請求1被完成,那麼之前的所有表視圖重新加載在請求2.
DispatchQueue.global(qos: DispatchQoS.QoSClass.default).async {
//1. request 1:
self.serverRequestAuth("/request1")
//2. request 2:
self.serverRequestAuth("/request2")
DispatchQueue.main.async{
//3. reload the table view
self.tableView.reloadData()
}
}
正在做的如何我我應該繼續?
提及:serverRequestAuth包含服務器請求,解析json,解析其中的字典。
的方法serverRequestAuth:
func serverRequestAuth(_ requestName: String){
let requestNameEscaped = requestName.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)!
var request = NSMutableURLRequest()
request = NSMutableURLRequest(url: URL(string: "\(self.view.getServerPath())\(requestNameEscaped)")!, cachePolicy: NSURLRequest.CachePolicy.reloadIgnoringLocalCacheData, timeoutInterval: 5)
request.httpMethod = "GET"
request.setValue(self.view.getAuth(), forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
let task = URLSession.shared.dataTask(with: request as URLRequest) {data, response, err in
if data != nil {
if let dictionary = self.parseJSONData(data!) {
self.parseDictionary(dictionary, typeOfRequest: requestName)
}
}
}
task.resume()
}
我嘗試了所有的答案,這是爲我工作的人,與提那「semaphore.wait(超時:.distantFuture)」給我一個警告:「結果調用'等待(超時:)'未使用」,我改變它是這樣的:「_ = semaphore.wait(超時:。遙遠的未來)」 – asheyla