2

私のアプリケーションには、約 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]];

このコードを実行しようとすると、「オブジェクトで正規表現マッチングを実行できません」というエラーが表示されました。

4

2 に答える 2

2

私はもっ​​と好きなことをします...

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%k like[c] %@",propertyIAmLookingFor,searchText];
于 2012-04-09T01:46:34.740 に答える
0

あなたの本のクラスは文字列ですか?そうでない場合は、SELF のように使用できません。比較するプロパティの名前を置き換える必要があります。

于 2012-04-09T00:28:17.630 に答える