针对多个keyPath执行valueForKeyPaths

时间:2013-04-20 01:31:31

标签: ios objective-c nsarray

假设我有一个具有一些属性的对象,我将1000个这些对象加载到一个数组中。接下来,我针对这些属性执行一系列valueForKeyPaths

result.property1 = [array valueForKeyPath:@"@sum.property1"];
result.property2 = [array valueForKeyPath:@"@sum.property2"];
result.property3 = [array valueForKeyPath:@"@sum.property3"];
etc...

单独总结这些属性似乎效率很低。除了快速枚举属性并手动求和之外,还有更好的方法吗?即。

for(Foo* foo in array) {
    result.property1 += foo.property1;
    result.property2 += foo.property2;
    result.property3 += foo.property3;
}

1 个答案:

答案 0 :(得分:0)

KVC要求键是字符串:

  

键是一个标识对象特定属性的字符串。通常,键对应于接收对象中的访问器方法或实例变量的名称。密钥必须使用ASCII编码,以小写字母开头,并且可能不包含空格。

所以答案就我所知,遗憾的是你不能用valueForKeyPath:做到这一点,你必须手动执行或枚举它。