如何使用两个 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的主要内容,如果未能解决你的问题,请参考以下文章