我有一个人类:
@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之外,是否可以使用一行代码?
由于
答案 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
将返回一个数组,其中包含所有帐户中所有交易的所有收款人对象。