私はhttpリクエストの結果を表示するテーブルを持っています。 クエリが終了する前にテーブルが表示されるため、アプリケーションがクラッシュすることがあります。アプリケーションにクラッシュはありません。iOS - クエリが完了するまで待ちます
テーブル:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! MyCustomCell
for i in 0...nameOfRoutesStart.count {
if (indexPath.row == i) {
cell.originLabel.text = nameOfRoutesStart[i]
cell.destinationLabel.text = nameOfRoutesEnd[i]
let id = driver[i]
self.userTasks.user(driverId: id, completionHandler: { (status, success) -> Void in
if success {
cell.driverLabel.text = self.userTasks.username
}
})
cell.textLabel?.lineBreakMode = NSLineBreakMode.byWordWrapping
}
}
return cell
}
は、私はあなたのviewDidLoadにテーブルビュー方法からご非同期コードを抽出し、別の関数に おかげ
**非同期関数を 'cellForRowAt'内で実行しないでください。**代わりに、関数を実行し、データソースをいっぱいにしてからテーブルビューを再読み込みするまで待ちます。 – the4kman
for cellforRowAtIndexPath ...それを避けてください。表示されているセルだけを要求します。 –