NSPredicate SUBQUERY用于由其他对象数组组成的对象

时间:2013-08-14 06:56:50

标签: nspredicate

假设我有一个具有以下数据的对象(用JSON表示)。我很想知道是否有办法编写子查询或使用不带块的NSPredicate来直接提取那些只有状态为“W”的测试对象。

即从NSPredicates获得以下内容。

NSArray *list = [self.event.subjects filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(subject *subject, NSDictionary *bindings) {
    for (test *test in subject.tests) {
        if ([test.status.lowercaseString isEqualToString:@"w"]) {
            return YES;
        }
    }
    return NO;
}]];



{
"id": 860142,
"subjectList": [
    {
        "id": 12206971,
        "testList": [
            {
                "id": 76904260,
                "status": "W"
            },
            {
                "id": 76904291,
                "status": "L"
            }
        ]
    },{
        "id": 12206971,
        "testList": [
            {
                "id": 76904260,
                "status": "L"
            },
            {
                "id": 76904291,
                "status": "L"
            }
        ]
    }
]

}

1 个答案:

答案 0 :(得分:0)

找到了这个解决方案......我认为这只是一个让SUBQUERY感到太害怕的情况,因为解决方案刚刚变得如此简单。

 [self.event.subjects filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SUBQUERY(tests, $x, $x.status.lowercaseString == 'w').@count > 0"]];