valueforkey当对象属性是只读和计算(派生)
我在计算属性时调用valueforkey方法时遇到问题。 例如:
@interface Value : NSObject
@property(nonatomic,getter = toString,readonly)NSString *stringVal;
-(NSString*) toString;
@end
当我调用[instanceOfValueClass valueForKey:@“stringVal”]时,它表示它不是键值兼容的。 确切的消息是:
[valueForUndefinedKey:]:该类不是关键字stringVal的关键字编码兼容值。
键值编码是否适用于派生属性?
谢谢
您已将getter方法设置为toString
,如此
[instanceOfValueClass valueForKey:@"toString"]
应该管用。 请注意,您不必“重命名”getter方法,只需重写默认的getter即可:
@property(nonatomic,readonly) NSString *stringVal;
- (NSString *)stringVal
{
NSString *s = ...; // compute property value
return s;
}
然后, instance.stringVal
和[instance valueForKey:@"stringVal"]
都可以使用“相同的密钥”。
上一篇: valueforkey when object property is readonly and Calculated(derived)