1

私は10k以上のテーブルビューを表示したいアプリに取り組んでいます。cs193pからfetchedresultcontrollerを使用していますが、うまく機能します。読み込みとスクロールはかなり速いです。それぞれの文字で検索できるようにしたいと思います。
検索バーとデリゲートを設定し、検索バーのtextdidchangeメソッドに各文字でfetchresultsコントローラーをリロードさせます。それは動作しますが、とにかくそれをより速くするために遅延があります。これは私のtextdidchangeメソッドです

-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {

//NSLog(@"%@",searchText);
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"People"];
request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"fullname" ascending:YES]];
[NSFetchedResultsController deleteCacheWithName:@"peopleCache"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(firstname contains[c] %@)",searchText];
 request.predicate = predicate;

self.fetchedResultsController = [[NSFetchedResultsController alloc]initWithFetchRequest:request managedObjectContext:self.peopleDatabase.managedObjectContext sectionNameKeyPath:nil cacheName:@"actorCache"];  

}

実際にデータを再フェッチせずに既存のクエリをフィルタリングする方法はありますか?

どんな提案でも大歓迎です!

4

2 に答える 2

1

テキスト検索を最適化するための秘訣は、「iPhoneOSでのコアデータパフォーマンスの最適化」WWDCセッションで説明されています。

于 2012-04-24T21:44:38.217 に答える
0

述語を使用して既存の配列を検索することはできますが、検索しているすべてのフィールドで障害が発生する可能性があります...アプリケーションによっては悪いことになる可能性があります(つまり、再フェッチするだけで使用されるメモリが遅くなり、多くなります) 。

于 2012-04-24T21:55:16.227 に答える