如果接收者类符合 NSKeyValueProtocol,则可以选择走很长的路:
[myInstance setValue:[NSNumber numberWithInt:2] forKey:@"integerProperty"];
或简短的方式:
myInstance.integerProperty = 2;
这个KVC方法有什么意义呢?这什么时候有用?
首先,这些不一样,第二个应该是:
myInstance.integerProperty = [NSNumber numbwerWithInt:2];
if integerProperty
is an NSNumber
.
一般来说,当您做的事情最多时,您会使用第二种形式。你用setValue:forKey:
and valueForKey:
当您想要动态选择存储内容的属性时。例如,考虑如何valueForKeyPath:
反对NSArray
有效(仅供参考,如果您致电-valueForKey:
反对NSArray
它将返回一个数组,其中每个对象都是询问该对象中相应对象的结果NSArray
对于该值:
- (NSArray *) valueForKey:(id)key {
NSMutableArray *retval = [NSMutableArray array];
for (NSObject *object in self) {
[retval addObject:[object valueForKey:key]];
}
return retval;
}
在上面的例子中我们可以使用valueForKey:
即使我们事先不知道键是什么,也可以实现我们的函数,因为它是作为参数传入的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)