NSDictionary子对象的谓词filter

我试图过滤来自Facebook的API的响应,JSON看起来像这样:

{ "Data": [ { "first_name" : "Joe", "last_name" : "bloggs", "uuid" : "123" }, { "first_name" : "johnny", "last_name" : "appleseed", "uuid" : "321" } ] } 

我加载到一个NSDictionary,访问它像[[friendDictionary objectForKey:@"data"] allObjects]

我现在试图基于first_namelast_name基于何时有人向文本字段中input名称进行过滤。 这是我所拥有的,但是它的可怕之处在于:

  NSPredicate *filter = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"ANY.first_name beginswith[c] %@ OR ANY.last_name beginswith[c] %@", friendField.text, friendField.text]]; NSLog(@"%@", [[[friendDictionary objectForKey:@"data"] allObjects] filteredArrayUsingPredicate:filter]); 

任何帮助非常感谢,谢谢你们

你在想太复杂

  • stringWithFormat在这里没有意义。
  • 在谓词中不需要“ANY”聚合,这与核心数据对象中的多对多关系一起使用。
  • [friendDictionary objectForKey:@"Data"]返回一个数组, allObjects在这里是错误的。
  • 关键是“数据”,而不是“数据”。

这给了

 NSPredicate *filter = [NSPredicate predicateWithFormat:@"first_name beginswith[c] %@ OR last_name beginswith[c] %@", friendField.text, friendField.text]; NSArray *filteredArray = [[friendDictionary objectForKey:@"Data"] filteredArrayUsingPredicate:filter];