我无法在计算出的属性上调用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"]可以使用“相同的键”。

09-11 21:42