我有一系列字典.

我想根据密钥筛选array.

我试过这个:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(SPORT ==  %@)", @"Football"];

NSArray *filteredArray = [data filteredArrayUsingPredicate:predicate];

这不管用,我没有结果.我觉得我做错了什么.我知道如果"运动"是ivar,这就是方法.我认为如果它是一把 keys ,可能会有所不同.

然而,我还没有找到一个例子.

谢谢


Update

我在搜索的字符串周围加了引号.

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(SPORT ==  '%@')", @"Football"];

它仍然不起作用.


Update 2

解决了.实际上,我不得不删除单引号,这似乎与指南所说的背道而驰.

我真正的问题是我有一个嵌套数组,而我并没有实际判断字典.骨头头移动.

推荐答案

它应该可以工作——只要数据变量实际上是一个数组,其中包含一个带有键的字典

NSArray *data = [NSArray arrayWithObject:[NSMutableDictionary dictionaryWithObject:@"foo" forKey:@"BAR"]];    
NSArray *filtered = [data filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(BAR == %@)", @"foo"]];

本例中过滤的内容包含字典.

(不必引用%@号,这是在NSPredicate创建对象时完成的.)

Objective-c相关问答推荐

Objective-C,如何获取 UTC 时区的当前日期?

自构建预编译头后文件已被修改

我需要在 ARC 中使用 dealloc 方法吗?

防止同时多个按钮

MKMapView zoom 到 viewDidLoad 上的用户位置?

Asihttprequest 61 错误

pathForResource 返回 null

为什么当我使其处于非活动状态时,弱 IBOutlet NSLayoutConstraint 变为 nil?

XCTAssert 和 XCTAssertTrue 有什么区别?

如果安装了应用程序,如何以编程方式判断?

何时使用静态字符串与 #define

MKMapView MKPointAnnotation 点击​​事件

在 ObjC 实现文件中声明的实例变量

Objective-C 中的 alloc、init 和 new

如何将@selector 作为参数传递?

从 NSRange 创建 UITextRange

writeToFile:atomically: atomically 是什么意思?

如何在 xcode 项目中启用/禁用 ARC?

即使在静音模式下也能在 iPhone 上播放声音

无法加载从设备上运行的包中的 nib 引用的图像