テーブルビューを再読み込みする前に、この2つの要求を完了しています(テーブルビューは両方に依存します)。テーブルビューをリロードする前に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(timeout:.distantFuture)"は私に警告を出していました。 "wait(timeout :)の呼び出し結果は未使用"で、このように変更しました: "_ = semaphore.wait(timeout:。遠い将来)" – asheyla