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_name
和last_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];