在给定现有NSPredicate的情况下,如何为子查询创建NSPredicate?

时间:2016-11-11 13:27:22

标签: objective-c nspredicate

在我的应用中,一个审核有很多结果。

我有一个返回NSPredicate的方法,该方法按搜索文本和类型ID过滤结果:

+ (NSPredicate)predicateWithSearchText:(NSString *)searchText typeId:(NSNumber *)typeId;

我想使用这个谓词根据他们的发现的属性过滤一系列Audits。因此,给定第一个方法的输出,我想创建一个等同于:

的新谓词
[NSPredicate predicateWithFormat:@"SUBQUERY(findings, $x, ????).@count > 0"]

...其中????将我现有的谓词应用于审计结果。

如何在不公开+predicateWithSearchText:typeId:内的逻辑的情况下执行此操作?

1 个答案:

答案 0 :(得分:0)

这就是你要找的东西吗?

- (void)sampleMethod:(NSPredicate *)predicateWithSearchText {
    NSPredicate *pred = [NSPredicate predicateWithBlock:^BOOL(id object, NSDictionary *bindings) {
        BOOL auditFinding = [self auditFinding:object];
        BOOL predFinding = [predicateWithSearchText evaluateWithObject:object];
        return auditFinding && predFinding;
    }];
}