假设我有一个具有一些属性的对象,我将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;
}
答案 0 :(得分:0)
KVC要求键是字符串:
键是一个标识对象特定属性的字符串。通常,键对应于接收对象中的访问器方法或实例变量的名称。密钥必须使用ASCII编码,以小写字母开头,并且可能不包含空格。
所以答案就我所知,遗憾的是你不能用valueForKeyPath:
做到这一点,你必须手动执行或枚举它。