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

Man*_*uel -1 objective-c nsarray

我有一个班级人物:

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

然后我有一个NSArray of Persons:

Person *personA;
Person *personB;
allPersons = @[personA, personB];
Run Code Online (Sandbox Code Playgroud)

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

allPersonNames = @[Max, Bob];
Run Code Online (Sandbox Code Playgroud)

除了循环遍历所有对象和addObject name属性到NSMutableArray之外,是否可以使用单行代码?

谢谢

rob*_*off 5

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

NSArray *names = [allPersons valueForKey:@"name"];
Run Code Online (Sandbox Code Playgroud)

这在" 键 - 值编码编程指南 "的"使用键值编码获取属性值"部分的最后一段中进行了介绍:

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