考虑以下JSON对象:
[
{
"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中创建一个谓词来查询不同"类型的值#34;基于
的对象和过滤器由于
答案 0 :(得分:2)
使用块创建谓词,并在块内创建比较函数。
NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary * bindings) {
if([[evaluatedObject objectForKey:@"name"] isEqual:@"SomeString]) {
return YES;
} else {
return NO;
}
}
这个简单的第一级比较,但你明白了。从这个对象你可以更深入,并返回YES / NO,你可以确定比较结果。
答案 1 :(得分:2)
如果您的数据位于名为jsonArray的NSArray中,则可以使用以下内容过滤类型:
NSString *typeToSelect = @"abc";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY type like %@",typeToSelect];
NSArray *filteredArray = [jsonArray filteredArrayUsingPredicate:predicate];