如何在NSSet或NSArray中搜索具有特定属性特定值的对象?

示例:我有一个包含20个对象的NSSet,每个对象都有一个type属性.我想得到第一个有[theObject.type isEqualToString:@"standard"]的物体.

我记得有可能用谓词来处理这类事情,对吧?

推荐答案

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"type == %@", @"standard"];
NSArray *filteredArray = [myArray filteredArrayUsingPredicate:predicate];
id firstFoundObject = nil;
firstFoundObject =  filteredArray.count > 0 ? filteredArray.firstObject : nil;

注:在NSSet中找到first个对象的概念毫无意义,因为集合中对象的顺序尚未定义.

Objective-c相关问答推荐

表达式不可分配 - 将浮点数分配为 Xcode 中其他两个浮点数的总和时出现问题?

获取按其各自值排序的 NSDictionary 键

具有匿名函数/块的 NSTimer?

Iphone,获取 NSArray 中的国家/地区列表

启动 Finder 窗口并 Select 特定文件

在objective-c中创建现在的时间戳作为NSNumber

以编程方式调用情节提要场景(无需转场)?

如何将当前方法的名称或签名放入 NSString?

添加自定义 initWith?

在 Objective C 中使用 extern

UICollectionView 单元格 Select 和单元格重用

如何删除应用程序可访问的所有 keys 串项目?

将块存储在数组中

Objective C - 如何连接整个字符串数组?

使用 NSLog 打印 NSData

自定义导航栏样式 - iOS

从带有参数的方法名称创建 Select 器

iPhone SDK:如何在视图中播放视频?而不是全屏

在 iPhone 上查找用户的 Documents 目录的最佳方法是什么?

带有 UIImage 的 UIBarButtonItem 始终着色 iOS 7