我正在尝试在我的iPhone应用中实现更好的直播(在您键入时搜索)联系人搜索。在做了一些真正的设备测试后,如果发现我的当前(非线程)实现太慢了。据我所知,iPhone没有聚光灯API。所以我认为解决方案必须是线程化的,以便每x秒更新一次结果而不是每次击键。有没有我可以构建的开源实现?
谢谢!
答案 0 :(得分:1)
据我所知,iPhone没有聚光灯API。
你不需要一个。这是一种方法:
NSFetchedResultsController
管理结果集UISearchDisplayController
实时在结果集上应用NSPredicate
我可以看到您需要的唯一线程是使用联系人填充Core Data存储的单独线程。
通过NSFetchedResultsController
获得结果集后,应用谓词非常容易。例如:
if ([self.searchBar.text length]) {
_predicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"(myContactName contains[cd] '%@')", self.searchBar.text]];
[self.fetchedResultsController.fetchRequest setPredicate:_predicate];
}
NSError *error;
if (![self.fetchedResultsController performFetch:&error]) {
// handle error...
}
NSLog(@"filtered results: %@", [self.fetchedResultsController fetchedObjects]);
将动态过滤结果集[self.fetchedResultsController fetchedObjects]
。
答案 1 :(得分:0)
有多慢?看起来您的搜索和更新功能可能会有更简单的优化(除了线程),特别是考虑到您只是搜索联系人。除非你有成千上万的联系人,否则我无法想象这会特别慢。