带嵌套JSON数组的iOS NSPredicate

带嵌套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",

考虑以下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中创建一个谓词来查询不同“类型”对象的值并基于此进行筛选


感谢

使用块创建谓词,并在块内创建比较函数

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

工作完美。谢谢