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