根据3个NSPredicates动态过滤数组

时间:2013-11-23 23:32:09

标签: ios objective-c nsstring nspredicate

我有一个NSDictionaries的NSMutableArray。我希望能够动态过滤。 例如。 我有3种类型的过滤器

- area
- item
- type

如果area是chossen,那么我想用区域谓词过滤数组,但是如果用户选择过滤项目,那么当前过滤的区域数组也会应用项过滤器。

但是,如果删除了区域过滤器,那么我想显示新的项目过滤器。

当引入类型时它变得更加复杂,但是我正在努力让它正常工作并且不知道从哪里开始它的逻辑。

我可以根据最后选择的谓词来过滤数组。因此,如果我选择区域然后项目,则当前过滤器将只是不是两者的项目。

非常感谢任何帮助,提示或示例代码。

1 个答案:

答案 0 :(得分:3)

尝试类似:

NSMutableArray *predicates = [NSMutableArray array];

if (...) {
    [predicates addObject:...];
}

NSCompoundPredicate *p = [[NSCompoundPredicate alloc] initWithType:NSAndPredicateType subpredicates:predicates];

如果需要,可以将各个谓词添加到数组中。这假设至少需要应用一个谓词。