objective-c - 如何使用大型核心数据集实现更快的搜索

标签 objective-c ios

我正在开发应用程序,我想在其中显示 10k+ 的 tableview 我正在使用来自 cs193p 的 fetchedresultcontroller,它运行良好。加载和滚动非常快。我希望能够搜索每个字母。
我设置了搜索栏和委托(delegate),并让搜索栏 textdidchange 方法为每个字母重新加载 fetchresults Controller 。它可以工作,但无论如何都会有延迟以使其更快。 这是我的 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"];  

有没有什么方法可以在不实际重新获取数据的情况下过滤现有查询?

任何建议将不胜感激!

最佳答案

Optimizing Core Data Performance on iPhone OS” WWDC session 中提到了优化文本搜索的技巧。

关于objective-c - 如何使用大型核心数据集实现更快的搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10290834/

相关文章:

ios - 如何在同一个wifi中获取其他设备的主机名?

objective-c - 带有 UILabel subview 缓存问题的 UITableViewCell

objective-c - 如果代码包含在函数中的花括号中会发生什么?

android - 在 Microsoft Azure VDI 中设置用于 iOS 开发的 Mac OS 环境

ios - 通过 Storyboard以模态方式在选项卡栏中呈现特定选项卡

ios - 为整个 UISplitViewController 添加背景

objective-c - UITableViewCell 防止删除

objective-c - 如何使用 NSString 解析这个字符串?

ios - 将带有 AVMutableVideoComposition 的文本覆盖添加到特定时间范围

ios - 我可以使用 RestKit 下载并解析大文件吗?