目标C:是否有内置的方法来计算2d /嵌套NSArray中的项目总数?

use*_*719 2 objective-c nsarray ios

我在Objective C中有一个二维NSArray.

我想知道数组中的项目总数.如果不使用嵌套的for循环,是否有更快的方法来获取项目的总数?

谢谢!

Dav*_*ong 11

是的,你可以做这个键值编码和集合运算符:

NSArray *nested = @[@[@1, @2, @3],    @[@4, @5, @6],    @[@7, @8, @9],
                    @[@10, @11, @12], @[@13, @14, @15], @[@16, @17, @18],
                    @[@19, @20, @21], @[@22, @23, @24]];
NSLog(@"%@", [nested valueForKeyPath:@"@sum.@count"]); // logs 24 (as an NSNumber)
Run Code Online (Sandbox Code Playgroud)

几条评论:

关键路径的@sum.@count工作原理是首先创建一个计数数组(so @[@3, @3, @3, @3, @3, @3, @3, @3]),然后总结该数组(给出@24).

然而,这在一定意义只有"快" 写更少的代码.从根本上说,它仍然在做你自己做的事情.它的效率可能较低,因为它处理的是加法NSNumbers,这不如添加基元(你可能会使用它)那样有效.

真的要难得多:

NSUInteger total = 0;
for (NSArray *array in nested) {
  total += array.count;
}
Run Code Online (Sandbox Code Playgroud)