我有一个字典数组。
我想根据一个键过滤数组。
我试过了:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(SPORT == %@)", @"Football"];
NSArray *filteredArray = [data filteredArrayUsingPredicate:predicate];
这不起作用,我没有得到任何结果。我想我做错了什么。如果“SPORT”是 ivar,我知道这就是方法。如果是 key 的话,我想可能会有所不同。
但是我找不到一个例子。
谢谢
更新
我在要搜索的字符串周围添加了引号。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(SPORT == '%@')", @"Football"];
还是不行。
更新 2
解决了。我实际上不得不删除单引号,这似乎与指南所说的背道而驰。
我真正的问题是我有一个嵌套数组,而我实际上并没有评估字典。骨头移动。
最佳答案
它应该可以工作 - 只要数据变量实际上是一个包含带有键 SPORT 的字典的数组
NSArray *data = [NSArray arrayWithObject:[NSMutableDictionary dictionaryWithObject:@"foo" forKey:@"BAR"]];
NSArray *filtered = [data filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(BAR == %@)", @"foo"]];
Filtered 在这种情况下包含字典。
(%@ 不必被引用,这是在 NSPredicate 创建对象时完成的。)
关于objective-c - 使用 NSPredicate 根据 NSDictionary 键过滤 NSArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/958622/