如何获取数组中的对象属性数组?

时间:2014-03-04 23:16:22

标签: objective-c nsarray

我有一个人类:

@interface Person : NSObject
{
    NSInteger *_age
    NSString *_name;
}
@property (nonatomic, strong) NSInteger *age;   
@property (nonatomic, strong) NSString *name;
@end

然后我有一个NSArray of Persons:

Person *personA;
Person *personB;
allPersons = @[personA, personB];

如何获取所有名称的数组:

allPersonNames = @[Max, Bob];

除了遍历所有对象并将name属性addObject添加到NSMutableArray之外,是否可以使用一行代码?

由于

1 个答案:

答案 0 :(得分:5)

您可以使用键值编码创建名称数组,如下所示:

NSArray *names = [allPersons valueForKey:@"name"];

这在section “Getting Attribute Values Using Key-Value Coding” of the Key-Value Coding Programming Guide的最后一段中有记载:

  

如果为包含to-many属性的键的键路径返回一个值,并且该键不是路径中的最后一个键,则返回的值是一个包含该键的所有键的集合。多对键的权利。例如,请求键路径transactions.payee的值将返回包含所有事务的所有收款人对象的数组。这也适用于密钥路径中的多个数组。关键路径accounts.transactions.payee将返回一个数组,其中包含所有帐户中所有交易的所有收款人对象。