私のアプリケーションには、約 12000 エントリの大きなテーブルがあります。テーブルビューで表示しています。しかし、動的検索を行っている間は検索バーが遅すぎます。NSPredicate メソッドは NSRange よりも優れていると読みました。
これは私の古いコードです:
[self.filteredListContent removeAllObjects];
listContent = [[NSArray alloc] initWithArray:[dbAccess getAllBooks]];
for (Book *book in listContent)
{
NSRange range = [book.textBook rangeOfString:searchText options:NSCaseInsensitiveSearch];
if (range.location != NSNotFound)
{
[self.filteredListContent addObject:book];
}
}
私の新しいコード:
[self.filteredListContent removeAllObjects];
listContent = [[NSArray alloc] initWithArray:[dbAccess getAllBooks]];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF like[c] %@",searchText];
[self.filteredListContent addObject:[listContent filteredArrayUsingPredicate:predicate]];
このコードを実行しようとすると、「オブジェクトで正規表現マッチングを実行できません」というエラーが表示されました。