テーブル ビューに検索バーがありますがUISearchDisplayController
、結果を表示するために を使用しておらず、代わりにテーブル ビューを使用しています。
私が持っているコードは機能しているように見えますが、それが許容できるものかどうか疑問に思っています。ユーザーが入力を開始すると、述語を追加して検索を実行します。ユーザーが検索バー内のテキストを削除すると、NSFetchResultsController
すべてをフェッチするために nil アウトします。
私はここでひどく間違ったことをしていますか、それとももっと良い方法がありますか?
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
if ([searchText length] == 0) {
_fetchedResultsController = nil;
}
else {
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name contains[cd] %@", searchText];
[[_fetchedResultsController fetchRequest] setPredicate:predicate];
}
NSError *error;
if (![[self fetchedResultsController] performFetch:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
}
[[self tableView] reloadData];
}