首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从NSArray获取单个属性的NSArray

从NSArray获取单个属性的NSArray
EN

Stack Overflow用户
提问于 2011-05-12 02:14:34
回答 3查看 1.2K关注 0票数 9

我正面临着一个非常普通的场景。

我有一个NSArray,它具有自定义类型的对象,比如Person。Person类具有以下属性: firstName、lastName和age。

如何从具有Person对象的NSArray中获取只包含一个属性的NSArray?

类似于:

代码语言:javascript
复制
NSArray *people;
NSArray *firstNames = [people getArrayOfAttribute:@"firstName" andType:Person.Class]

我有一个解决方案,就是编写一个for循环并填充firstNames数组,但我不想这样做。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-12 02:25:16

NSArray将使用KVC为您处理此问题

代码语言:javascript
复制
NSArray *people ...;
NSArray *firstName = [people valueForKey:@"firstName"];

这将为您提供一个包含数组中每个条目的firstName值的数组

票数 22
EN

Stack Overflow用户

发布于 2011-05-12 02:22:30

查看NSMutableArray中的filterUsingPredicate:方法,基本上是创建一个NSPredicate对象来定义如何过滤数组。

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Predicates/Articles/pUsing.html#//apple_ref/doc/uid/TP40001794-CJBDBHCB

本指南将给你一个概述,并有一个处理数组的部分。

票数 1
EN

Stack Overflow用户

发布于 2011-05-12 05:10:39

您还可以使用基于块的枚举:

代码语言:javascript
复制
NSArray *people;  // assumably has a bunch of people
NSMutableArray *firstNames = [NSMutableArray array];

[people enumerateObjectsUsingBlock: 
 ^(id obj, NSUInteger idx, BOOL*flag){
     // filter however you want...
     [firstNames addObject:[Person firstName]];
 }];

好处是,如果你有一群人,它是快速和有效的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5968702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档