快速计算NSSet中所有对象的属性?

时间:2009-07-10 01:39:39

标签: objective-c cocoa-touch collections nsset

我认为有一种方法可以快速要求NSSet对其成员进行轮询,并在每个对象中返回一个NSInteger属性的总和,但我很可能会混淆事物的Mac OS X方面。这是否存在于Cococa Touch中?

我能找到的最接近的是objectEnumerator,我想我可以通过每个对象来增加我自己的变量。是否存在更好的方式?

2 个答案:

答案 0 :(得分:15)

如果您正在尝试为符合KVC(theIntegerPropertyToSum)的数组/集合派生类的每个成员查找给定属性(theSet)的总和,则可以执行以下内容:

NSNumber* theSum = [theSet valueForKeyPath:@"@sum.theIntegerPropertyToSum"];

答案 1 :(得分:-3)

为什么不使用普通目标C(2)?

NSInteger theSum = 0;
for (id obj in theSetOrArray)
    theSum += obj.theIntegerPropertyToSum;

缺点: 如果你想计算线数,那么这看起来更长。是否存在其他缺点 - 我想知道KVC方法对于没有所需'theIntegerPropertyToSum'属性的对象会发生什么?

优势: 我敢打赌,这个调试和性能测试更容易。此外,当其他人在一两年内阅读您的代码时,他们会知道这里发生了什么 - 他们是否曾经看过一系列目标C,这看起来就像实际发生的那样。