Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 对象属性为只读且已计算(派生)时的valueforkey_Iphone_Ios_Key Value Coding - Fatal编程技术网

Iphone 对象属性为只读且已计算(派生)时的valueforkey

Iphone 对象属性为只读且已计算(派生)时的valueforkey,iphone,ios,key-value-coding,Iphone,Ios,Key Value Coding,对已计算的属性调用valueforkey方法时遇到问题。例如: @interface Value : NSObject @property(nonatomic,getter = toString,readonly)NSString *stringVal; -(NSString*) toString; @end 当我调用[instanceOfValueClass valueForKey:@“stringVal”]时,它说它不符合键值。确切的信息是: [valueForUndefinedKey:

对已计算的属性调用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
[实例值forkey:@“stringVal”]

使用“同一个键”也可以工作。

@Jignesh:我认为KVC查找的是getter方法,而不是属性名。