如何使用两个NSPredcates过滤NSArray

时间:2013-11-23 22:21:26

标签: ios nsstring nsarray nspredicate

我想过滤NSDrray的NSArray,但是我想使用一个,两个甚至三个NSPredicate值来过滤结果?

目前我正在通过这样做来过滤我的数组。

NSPredicate *predicateString = [NSPredicate predicateWithFormat:@"parts == %@", filterString];//keySelected is NSString itself
        NSMutableArray *filteredArray = [NSMutableArray arrayWithArray:[currentParts filteredArrayUsingPredicate:predicateString]];
        sortedItemsArray = [filteredArray mutableCopy];

但我不确定如何使用两个谓词来做到这一点?

其他两个谓词分别看起来像上面那个接受不同的键。

NSPredicate *predicateString = [NSPredicate predicateWithFormat:@"area == %@", filterString];

NSPredicate *predicateString = [NSPredicate predicateWithFormat:@"item == %@", filterString];

我在想的是,也许你可以拥有像

这样的东西
NSPredicate *predicateString = [NSPredicate predicateWithFormat:@"stage == %@ area == %@", filterString, areaflterstring];

但我不认为那是可能的......希望它会让你知道我想要实现的目标。

非常感谢任何帮助

1 个答案:

答案 0 :(得分:1)

这是可能的,但您需要告诉谓词如何组合部分,例如:

NSPredicate *predicateString = [NSPredicate predicateWithFormat:@"stage == %@ AND area == %@", filterString, areaflterstring];

您也可以使用NSCompoundPredicate组合多个谓词。