0

我正在尝试过滤来自 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基于有人在文本字段中输入名称的时间进行过滤。这就是我所拥有的,但它的失败非常可怕:

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

非常感谢任何帮助,谢谢大家

4

1 回答 1

5

你想得太复杂了。

  • stringWithFormatpredicateWithFormat这里没有意义。
  • 不需要谓词中的“ANY”聚合,它与 Core Data 对象中的多对多关系一起使用。
  • [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];
于 2012-08-19T19:48:06.640 回答