2014-03-04 85 views
-1

我有一類人:如何獲取數組中的對象屬性數組?

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

然後,我有人員的的NSArray:

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

我如何得到所有名的數組:

allPersonNames = @[Max, Bob]; 

比其他循環遍歷所有對象,並將name屬性添加到NSMutableArray中,這對於單行代碼來說可能嗎?

感謝

+0

請記錄你的'數組',因爲你對數據結構的描述看起來不正確/有效。你似乎在混淆數組和字典...... – Wain

+0

謝謝Wain,編輯了上面的例子。 – Manuel

+0

不是字典數組,但是@robmayoff的答案仍然適用 – Wain

回答

4

您可以使用鍵 - 值編碼名稱的數組,像這樣:

當:

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將爲所有帳戶中的所有交易返回一個包含所有收款人對象的數組。

相關問題