【问题标题】:Objective C: Is there a built-in way to count the total number of items in a 2d /nested NSArray?目标 C:是否有一种内置方法来计算 2d /nested NSArray 中的项目总数?
【发布时间】:2014-02-09 06:26:13
【问题描述】:

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

我想知道数组中的项目总数。 在不使用嵌套 for 循环的情况下,是否有更快的方法来获取项目总数?

谢谢!

【问题讨论】:

标签: ios objective-c nsarray


【解决方案1】:

是的,你可以做这个键值编码和the collection operators

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)

几个cmets:

关键路径@sum.@count 首先创建一个计数数组(即@[@3, @3, @3, @3, @3, @3, @3, @3]),然后对该数组求和(得到@24)。

但是,这只是“更快”,因为编写的代码更少。从根本上说,它仍然在做你自己会做的事情。而且它的效率可能较低,因为它处理的是NSNumbers 的添加,这不如添加原语(您可能会使用)高效。

真的有那么难做吗:

NSUInteger total = 0;
for (NSArray *array in nested) {
  total += array.count;
}

【讨论】:

  • 你知道,显而易见的方法不够聪明。而且我敢肯定它不是很有效!!!!!!!!!!!!!!!
猜你喜欢
  • 1970-01-01
  • 2011-09-25
  • 2011-01-21
  • 2022-10-09
  • 1970-01-01
  • 2019-05-05
  • 1970-01-01
  • 2013-12-24
  • 1970-01-01
相关资源
最近更新 更多