我认为有一种方法可以快速要求NSSet
对其成员进行轮询,并在每个对象中返回一个NSInteger
属性的总和,但我很可能会混淆事物的Mac OS X方面。这是否存在于Cococa Touch中?
我能找到的最接近的是objectEnumerator
,我想我可以通过每个对象来增加我自己的变量。是否存在更好的方式?
答案 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,这看起来就像实际发生的那样。