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]结合使用,因为新列表应该与旧列表完全一样长.请注意,我不是要尝试过滤原始数组的子集,而是创建一个具有完全相同数量的元素的新数组,只需要从数组中每个元素的某个任意属性中挖掘出来的值.
在python中,可以像这样解决这个问题:
new_List = [p['name'] for p in old_List]
或者如果你是一个受虐狂,像这样:
new_List = map(lambda p: p['name'],old_List)
在objective-c中必须稍微明确一点,这让我想知道是否有一种公认的处理这些情况的常用方法.
解决方法 在这个特殊情况下,Cocoa在简洁中不甘示弱:)NSArray *newArray = [array valueForKey:@"name"];
从NSArray文档:
总结valueForKey:
Returns an array containing the results of invoking valueForKey: using key on each of the receiver’s objects.
以上是内存溢出为你收集整理的ios – 从现有的NSArray创建新的NSArray的标准惯例是什么?全部内容,希望文章能够帮你解决ios – 从现有的NSArray创建新的NSArray的标准惯例是什么?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)