1

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

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

单独对这些属性求和似乎非常低效。除了快速枚举属性并手动求和之外,还有更好的方法吗?IE

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

1 回答 1

0

KVC 要求键是字符串:

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

因此,据我所知,不幸的是,您不能这样做,valueForKeyPath:您必须手动执行或枚举它。

于 2013-04-20T02:52:28.040 回答