2

searchView と tableView を備えたビューコントローラーがあり、searchView のテキストに基づいて、tableView に Web 検索の結果を表示する必要があります (検索に文字を追加すると変化します)。

私が今持っているように、文字が追加されるたびに適切に検索されますが、検索中にアプリが停止するため、最後の結果が返されるまで新しい文字を追加できません.

新しい文字が追加されたときに最後の検索が本質的に中止されるように、これを行うためのよりスマートな方法はありますか?

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
    if(searchText.length>3)
    {
        [self getWebDataWithQuery:searchBar.text]
        [tblResults reloadData];
    }
}
4

4 に答える 4

0

それを行う別の方法 (私のプロジェクトの 1 つでこのようにしました) 検索用の NSOperations を作成します。検索文字列の文字が変更されるたびに、最後の検索クエリが現在の検索クエリと等しくないかどうかを確認し、そうでない場合は、実行中のすべての操作をキャンセルし、その後、新しい操作を作成して開始しました。

もちろん、すべてのリクエスト/データ処理はバックグラウンド スレッドで実行され、ダウンロード/解析/処理が完了したときにのみ UI に通知されます。

于 2013-05-31T19:47:33.183 に答える