0

我在尝试使用另一个数组的过滤结果填充数组时遇到错误。

我在 .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 时,我最终得到了一个错误。

使用不兼容类型“void”的表达式初始化“NSMutableArray *__strong”

4

3 回答 3

1

filterUsingPredicate 不返回数组,它什么都不返回(void)。

从描述:

“根据数组的内容评估给定的谓词,只留下匹配的对象”

您应该改用:

filteredArrayUsingPredicate
于 2013-02-18T15:40:54.913 回答
0

正如文档将告诉您的,filterUsingPredicate 有一个 void 返回值。看这里:

NSMutableArray 类参考

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

[allArray filterUsingPredicate:somePredicate];

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

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

玩得开心

于 2013-02-18T15:47:23.680 回答
0

filterUsingPredicate 返回一个 void 而不是一个数组。您可能要考虑改用filteredArrayUsingPredicate

于 2013-02-18T15:56:44.000 回答