【问题标题】:How do I create an NSPredicate for a subquery given an existing NSPredicate?如何为给定现有 NSPredicate 的子查询创建 NSPredicate?
【发布时间】:2016-11-11 13:27:21
【问题描述】:

在我的应用中,一个审核有很多发现。

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

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

我想使用此谓词根据审计结果的属性过滤一组审计。所以,给定第一种方法的输出,我想创建一个新的谓词,相当于:

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

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

如何在不暴露+predicateWithSearchText:typeId: 内部逻辑的情况下做到这一点?

【问题讨论】:

    标签: objective-c nspredicate


    【解决方案1】:

    您正在寻找类似的东西吗?

    - (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;
        }];
    }
    

    【讨论】:

    • 我正在寻找具有这种效果的东西,是的。理想情况下,我希望它完全等同于将其编写为子查询,以便核心数据可以有效地将其编写为 SQL 语句。但是,如果一段时间后没有出现类似的情况,我会将其标记为正确答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多