我正在开发应用程序,我希望用10k +显示一个tableview,我正在使用来自cs193p的fetchedresultcontroller,它运行良好。加载和滚动非常快。我希望能够用每个字母搜索 我设置了搜索栏和代理,并使用searchbar 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"];
}
有没有办法在不实际重新获取数据的情况下过滤现有查询?
任何建议都将不胜感激!
答案 0 :(得分:1)
“Optimizing Core Data Performance on iPhone OS”WWDC会话中提到了优化文本搜索的技巧。
答案 1 :(得分:0)
你可以搜索带有谓词的现有数组,但它可能会在你正在搜索的所有字段中出错...这取决于应用程序可能是一件坏事(即更慢和更多的内存使用只是反思)。