假设我有一个具有以下数据的对象(用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"
}
]
}
]
}
答案 0 :(得分:0)
找到了这个解决方案......我认为这只是一个让SUBQUERY感到太害怕的情况,因为解决方案刚刚变得如此简单。
[self.event.subjects filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SUBQUERY(tests, $x, $x.status.lowercaseString == 'w').@count > 0"]];