如何使用两个 NSPredcates 过滤 NSArray

Posted

技术标签:

【中文标题】如何使用两个 NSPredcates 过滤 NSArray【英文标题】:How to filter NSArray using two NSPredcates 【发布时间】:2013-11-23 22:21:25 【问题描述】:

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

但我认为这是不可能的。

【问题讨论】:

相关:***.com/q/10611362/457406 【参考方案1】:

可以,但是需要告诉谓词如何组合各个部分,比如:

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

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

【讨论】:

太棒了,非常感谢。现在将研究 NSCompoundPredicate :)

以上是关于如何使用两个 NSPredcates 过滤 NSArray的主要内容,如果未能解决你的问题,请参考以下文章

如何检测NR网络是NSA还是SA类型(使用android API)

NSA永恒之蓝病毒,如何通过360工具修复?

5g模式nsa和sa的区别

SPark单验模式使用说明

如何使用两个列表查询集过滤器?

5gsa和nsa的区别优势