尝试使用谓词对数组进行排序时出错

时间:2013-02-18 15:33:22

标签: ios xcode arrays ios6

当我尝试使用另一个数组的过滤结果填充数组时,我发现了一个错误。

我在.h文件中定义了一个名为allArray的全局数组,该数组包含大约100个对象。然后,我希望用户能够搜索特定对象,并且我尝试使用谓词来开发它:

  -(IBAction)searchChanged:(id)sender {
    //The searchfield's value has been changed.

    NSString *searchString = searchField.text;
    NSPredicate *searchPredicate = [NSPredicate predicateWithFormat:@"self CONTAINS[c] %@", searchString];
    NSMutableArray *tempSearchArray = [allArray filterUsingPredicate:searchPredicate];
    [filteredArray removeAllObjects];
    [filteredArray addObjectsFromArray:tempSearchArray];
}

当我创建tempSearchArray时,我最终收到错误。

  

使用表达式初始化'NSMutableArray * __ strong'   不兼容的类型'void'

3 个答案:

答案 0 :(得分:1)

filterUsingPredicate不返回数组,它不返回任何内容(void)。

来自说明:

“根据数组的内容计算给定的谓词,只留下与”

匹配的对象

您应该使用:

filteredArrayUsingPredicate

答案 1 :(得分:0)

正如文档会告诉你的那样,filterUsingPredicate有一个void返回值。 见这里:

NSMutableArray Class reference

这意味着您无法将该返回值分配给另一个数组。 您需要在原始数组上使用此方法,沿着

[allArray filterUsingPredicate:somePredicate];

arrArray将被删除任何与谓词不匹配的元素。

现在按照您的意愿继续处理这些结果。

玩得开心

答案 2 :(得分:0)

filterUsingPredicate返回void而不是数组。您可能需要考虑使用filteredArrayUsingPredicate来代替