当我尝试使用另一个数组的过滤结果填充数组时,我发现了一个错误。
我在.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'
答案 0 :(得分:1)
filterUsingPredicate不返回数组,它不返回任何内容(void)。
来自说明:
“根据数组的内容计算给定的谓词,只留下与”
匹配的对象您应该使用:
filteredArrayUsingPredicate
答案 1 :(得分:0)
正如文档会告诉你的那样,filterUsingPredicate有一个void返回值。 见这里:
NSMutableArray Class reference
这意味着您无法将该返回值分配给另一个数组。 您需要在原始数组上使用此方法,沿着
行[allArray filterUsingPredicate:somePredicate];
arrArray将被删除任何与谓词不匹配的元素。
现在按照您的意愿继续处理这些结果。
玩得开心
答案 2 :(得分:0)
filterUsingPredicate返回void而不是数组。您可能需要考虑使用filteredArrayUsingPredicate来代替