带嵌套JSON数组的iOS NSPredicate
考虑以下JSON对象:带嵌套JSON数组的iOS NSPredicate,ios,objective-c,json,nspredicate,Ios,Objective C,Json,Nspredicate,考虑以下JSON对象: [ { "name":"joe", "place":"here", "type":[ "abc", "cde", "efg" ] }, { "name":"ian", "place":"somewhere", "type":[ "c", "ddd", "eee" ] }, { "name":"mike", "place":"there",
[
{
"name":"joe",
"place":"here",
"type":[
"abc",
"cde",
"efg"
]
},
{
"name":"ian",
"place":"somewhere",
"type":[
"c",
"ddd",
"eee"
]
},
{
"name":"mike",
"place":"there",
"type":[
"any",
"place",
"nice"
]
},
]
我如何在Objective-C中创建一个谓词来查询不同“类型”对象的值并基于此进行筛选
感谢使用块创建谓词,并在块内创建比较函数
NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary * bindings) {
if([[evaluatedObject objectForKey:@"name"] isEqual:@"SomeString]) {
return YES;
} else {
return NO;
}
}
这是一个简单的第一级比较,但你得到了一个分数。从这个对象,您可以更深入,并在确定比较结果时返回YES/NO。如果您的数据位于名为jsonArray的NSArray中,您可以使用以下类型进行筛选:
NSString *typeToSelect = @"abc";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY type like %@",typeToSelect];
NSArray *filteredArray = [jsonArray filteredArrayUsingPredicate:predicate];
工作完美。谢谢