如何使用两个NSPredcates过滤NSArray

问题描述 投票:0回答:1

我想过滤一个NSDictionaries的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];

但是我认为那是不可能的。

ios nsstring nsarray nspredicate
1个回答
1
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.