假设我有一个具有一些属性的对象,我将这些对象加载到一个数组中。接下来,我对这些属性执行一系列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;
}发布于 2013-04-20 10:52:28
KVC要求密钥为字符串:
键是标识对象的特定属性的字符串。通常,键对应于接收对象中的访问器方法或实例变量的名称。键必须使用ASCII编码,以小写字母开头,并且不能包含空格。
所以,据我所知,不幸的是,你不能用valueForKeyPath:做到这一点,你必须手动去做,或者枚举它。
https://stackoverflow.com/questions/16115608
复制相似问题