6
比方說,我有一個NSArray
的NSDictionaries
這是10個元素長。我想創建第二個NSArray
與每個字典上的單個鍵的值。我可以計算要做到這一點,最好的辦法是:從現有NSArray創建新NSArray的標準約定是什麼?
NSMutableArray *nameArray = [[NSMutableArray alloc] initWithCapacity:[array count]];
for (NSDictionary *p in array) {
[nameArray addObject:[p objectForKey:@"name"]];
}
self.my_new_array = array;
[array release];
[nameArray release];
}
但從理論上講,我應該能夠逃脫不使用可變數組,並使用與[nameArray addObjectAtIndex:count]
結合計數器,因爲新的名單應該是完全與舊名單一樣長。請注意,我不是要過濾原始數組的一個子集,而是使用完全相同數量的元素創建一個新數組,只需使用數組中每個元素的某個任意屬性挖掘的值。
在蟒蛇人能解決這個問題是這樣的:
new_list = [p['name'] for p in old_list]
,或者如果你是一個受虐狂,像這樣:
new_list = map(lambda p: p['name'], old_list)
具有要在Objective-C稍微更明確的讓我想知道是否有一種公認的處理這些情況的方法。
這就是霍特,謝謝! – Prairiedogg 2009-06-22 10:07:09