グループ化されたテーブルビューを更新しようとしています。フィルターがあるため、データが 2 番目のセクションに表示されないことがあります。データは常に最初のセクションに表示されます。クエリには時間がかかるため、バックグラウンドで処理を行ってから、メイン スレッドで UI を更新しようとしています。しかし、私はそれを機能させることができないようで、何が間違っているのか疑問に思っていました。基本的に、最初のセクションではデータが正しく表示されますが、2 番目のセクションではデータがまったく表示されません。私が現在試していることを説明するための擬似コードを次に示します
dispatch_queue_t lowQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0);
dispatch_queue_t mainQueue = dispatch_get_main_queue();
dispatch_async(lowQueue, ^{
// long running task for section 1
if (filter == SHOW_SECTION_2) {
// long running task for section 2
dispatch_async(mainQueue, ^{
// update main thread UI for long running task 2
[self.tableView reloadData];
});
}
dispatch_async(mainQueue, ^{
// update main thread UI for long running task 1
[self.tableView reloadData];
});
1 つのテーブル セクションに対してのみ実行すると、機能します。正しい方法を見つけることができないのは、2つのことを更新する必要があるという事実です。ありがとう。
編集:テーブルビューを更新しようとしています。したがって、データを取得したら、リロード データを呼び出すだけです。