结果更好的方法在iOS搜索中的结果NSMutableArray

时间:2011-08-09 04:02:18

标签: objective-c ios

所以这就是我搜索的方式:

  1. 我有一个数据数组和一个可变的搜索结果数组
  2. 我执行搜索
  3. 我使用带有filterdArrayUsingPredicate的谓词填充数组中的搜索结果:
  4. 通过addObjectsFromArray:将该数组添加到可变结果数组中:

    - (void)filterContentForSearchText:(NSString*)searchText 
                                 scope:(NSString*)scope
    {
        NSPredicate *resultPredicate = [NSPredicate 
                                        predicateWithFormat:@"SELF contains[cd] %@",
                                        searchText];
    
        NSArray *results = [self.allItems filteredArrayUsingPredicate:resultPredicate];
    
        NSMutableArray *myResults = [[NSMutableArray alloc] init];
        [myResults addObjectsFromArray:results];
    
        self.searchResults = myResults;
    
        [myResults release];
    
        NSLog(@"%@", self.searchResults);
    }
    
  5. 我看到的问题是,每次执行搜索时都必须创建一个可变数组,这就是每次发生“keyup”时。我想知道这个方法是否有更好的方法。

    提前致谢!

1 个答案:

答案 0 :(得分:1)

步骤#4没有意义。直接分配过滤的数组但不通过myResults分配。在某些内部逻辑的情况下,您将需要一个过滤结果数组的副本,您仍然可以将其作为我的调用复制方法。