我在计算的属性上调用valueforkey方法时遇到问题。例如:
@interface Value : NSObject
@property(nonatomic,getter = toString,readonly)NSString *stringVal;
-(NSString*) toString;
@end
当我调用[instanceOfValueClass valueForKey:@“stringVal”]时,它表示它不符合键值。确切的消息是:
[valueForUndefinedKey:]:此类不是密钥stringVal的密钥值编码。
键值编码是否适用于派生属性?
由于
答案 0 :(得分:1)
您已将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"]
用“同一把钥匙”就可以了。