作業中の iOS アプリケーションにテーブル ビューがあり、データを読み込んで、キーボードの検索キーがクリックされたときにのみ検索を開始したいと考えています。現在、検索フィールドに入力を開始するとデータが読み込まれますが、データが多いため、遅延が大きくなります。
私はオンラインで調べてみましたが、ほとんどのチュートリアルや例では、データをすぐにロードするか、ユーザーが検索バーに入力しているときに言及しています。
どんな提案でも大歓迎です、ありがとう!
更新:解決済み
[ティムとチャンニの提案に感謝]
以下のコードは、更新されたソリューションです。
- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
/* loads the file into a dictionary */
NSString *myFile=[[NSBundle mainBundle] pathForResource:@"test" ofType:@"plist"];
dict = [[NSDictionary alloc] initWithContentsOfFile:myFile];
recipes = [dict allKeys];
NSPredicate *resultPredicate = [NSPredicate
predicateWithFormat:@"SELF contains[cd] %@",
searchText];
searchResults = [recipes filteredArrayUsingPredicate:resultPredicate];
}
-(void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{
[self filterContentForSearchText:self.searchBar.text scope:[[self.searchDisplayController.searchBar scopeButtonTitles] objectAtIndex:[self.searchDisplayController.searchBar selectedScopeButtonIndex]]];
/* reloads the searchResults table view with the new data */
[self.searchDisplayController.searchResultsTableView reloadData];
[self.searchBar resignFirstResponder];
}
-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
{
/* Sets both arrays to nil so main table view is a clean view */
searchResults = nil;
recipes = nil;
}