objective-c - 使用 NSPredicate 根据 NSDictionary 键过滤 N

我有一个字典数组。

我想根据一个键过滤数组。

我试过了:

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/

相关文章:

objective-c - 一旦创建,APNS 设备 token 是否会改变?

objective-c - 容器 View Controller 示例

objective-c - NSAutoreleasePool 自动释放池是如何工作的?

objective-c - ARC 是否支持调度队列?

iphone - iOS:在代码中访问 app-info.plist 变量

ios - 比较两个 CGRect

iphone - "wait_fences: failed to receive reply: 10

iphone - 是否有记录的方法来设置 iPhone 方向?

ios - TabBar 图像的大小应该是多少?

ios - UIFont - 如何获取系统细字体