Coo*_*coa 28 cocoa objective-c foundation
我有一个NSDictionary,其中每个键指向一个数组.我后来想要将所有值合并到一个数组中.有没有办法使用API来做一些比说更有效的事情:
NSArray *anArray = [someDictionary allValues];
NSMutableArray *newArray = [NSMutableArray array];
start outter loop on anArray
start inner loop on objects in anArray
add objectAtIndex to newArray
Run Code Online (Sandbox Code Playgroud)
Kai*_*ain 19
Benn Gottlieb在上面的回答中存在一些混淆.为了澄清,他建议使用addObjectsFromArray而不是内部循环,而Coocoo很困惑,因为他认为它被建议作为所有循环的替代.(如果你这样做,根据他的反对意见,你确实会留下一个不平整的数组阵列.)
这是一个相当优雅的解决方案,不需要任何显式循环:
NSArray *anArray = [someDictionary allValues];
NSArray *flattenedArray = [anArray valueForKeyPath: @"@unionOfArrays.self"];
Run Code Online (Sandbox Code Playgroud)
顺便说一下,这段代码会在flattened数组中留下重复数据.如果要删除重复项,请使用distinctUnionOfArrays而不是unionOfArrays.
| 归档时间: |
|
| 查看次数: |
18804 次 |
| 最近记录: |