iOS UISearchBar如何正确实施;键入时搜索";行为?

iOS UISearchBar如何正确实施;键入时搜索";行为?,ios,json,uitableview,uisearchbar,nspredicate,Ios,Json,Uitableview,Uisearchbar,Nspredicate,我正在使用iPad上的分割视图控制器实现搜索功能。它搜索从JSON对象获取的NSDictionary数组 我在表格视图的标题视图中添加了一个搜索栏,当用户在搜索栏中键入搜索查询时,我使用下面的代码用搜索结果更新表格 我很感兴趣我所做的是否是在iOS上实现“键入时搜索”行为的正确方法?如果我的JSON返回1000个结果,我会遇到性能问题吗?我是否需要实现一个搜索结果控制器,而不仅仅是将搜索栏放入表视图标题中 -(void)searchBar:(UISearchBar *)searchBar tex

我正在使用iPad上的分割视图控制器实现搜索功能。它搜索从JSON对象获取的
NSDictionary
数组

我在表格视图的标题视图中添加了一个搜索栏,当用户在搜索栏中键入搜索查询时,我使用下面的代码用搜索结果更新表格

我很感兴趣我所做的是否是在iOS上实现“键入时搜索”行为的正确方法?如果我的JSON返回1000个结果,我会遇到性能问题吗?我是否需要实现一个搜索结果控制器,而不仅仅是将搜索栏放入表视图标题中

-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
    [self doSearchWithString:searchText];
}


- (void)doSearchWithString:(NSString*)searchString
{
    NSPredicate* predicate = [NSPredicate predicateWithBlock:^BOOL(NSDictionary *object, NSDictionary *bindings) {
                                  //get the value from the dictionary (the name value)
                                  NSString *name = [object objectForKey:@"name"];

                                  if([[name lowercaseString] rangeOfString:[searchString lowercaseString]].location != NSNotFound) {
                                      return YES;
                                  }
                                  return NO;
                              }];

//change the datasource and ask the table to refresh itself
    self.searchResults = [self.dataSource filteredArrayUsingPredicate:predicate];
    [self.tableView reloadData];
}

根据数据集的大小,您可能很难获得足够的核心数据性能

它可能值得预取,然后尝试二进制数组搜索。见:

否则,它可能需要自定义二进制索引,如有向无环字图。看看这个答案:


根据数据集的大小,您可能很难获得足够的核心数据性能

它可能值得预取,然后尝试二进制数组搜索。见:

否则,它可能需要自定义二进制索引,如有向无环字图。看看这个答案: