Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 在iOS搜索中获得NSMutableArray结果的更好方法_Objective C_Ios - Fatal编程技术网

Objective c 在iOS搜索中获得NSMutableArray结果的更好方法

Objective c 在iOS搜索中获得NSMutableArray结果的更好方法,objective-c,ios,Objective C,Ios,下面是我如何进行搜索的: 我有一个数据数组和一个可变的搜索结果数组 我执行搜索 我使用带有FilterArraySingPredicate的谓词用搜索结果填充数组: 通过addObjectsFromArray:将该数组添加到可变结果数组中,如下所示: - (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope { NSPredic

下面是我如何进行搜索的:

  • 我有一个数据数组和一个可变的搜索结果数组
  • 我执行搜索
  • 我使用带有FilterArraySingPredicate的谓词用搜索结果填充数组:
  • 通过
    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);
    }
    
  • 我看到的问题是,每次执行搜索时,我都必须创建一个可变数组,这是每当出现“keyup”时。我想知道是否有更好的方法来解决这个问题


    提前谢谢

    第四步没有意义。直接分配筛选数组,但不通过myResults分配。在一些内部逻辑的情况下,您将需要一个过滤结果数组的副本,您仍然可以通过调用copy方法获得它

    等等,什么?为什么要创建那个可变数组?为什么不只是self.searchResults=[self.allItems filtered…]?这就是我在教程中经常看到的。其实不知道为什么。他们有一个用于结果的可变数组,并添加到该数组中,而我不能将筛选…]与可变数组一起使用是的,只有在将来需要向该数组添加内容或修改该数组时才这样做。如果没有,就不要这样做。还有,是的,你可以打电话给。。。在可变数组上,因为可变数组继承自NSArray,因此NSMutableArray可以执行NSArray可以执行的所有操作。