私のアプリケーションでは、私は約12000エントリの大きなテーブルを持っています。私はそれをtableviewに表示しています。しかし、動的検索を実行している間は検索バーが遅すぎます。私は、NSPredicateメソッドがNSRangeよりも順調であることを読んだ。オブジェクトとNSPredicate
これは私の古いコードです:
[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]];
私はこのエラーを受け取った、このコードを実行しよう:「オブジェクトの正規表現マッチングを行うことはできません。 '"
なぜ "SELF" ではなく "教科書"?言い換えれば、エンティティは探していませんが、 "searchText"を含む属性の場合 – moxy
これはエラーの原因がわかりませんが、[self.filteredListContent addObject:[listContent filteredArrayUsingPredicate:predicate]]; self.filteredListContent = [listContent filteredArrayUsingPredicate:predicate]である必要があります。 – rdelmar