【问题标题】:valueforkey when object property is readonly and Calculated(derived)对象属性为只读且已计算(派生)时的 valueforkey
【发布时间】:2013-08-01 16:36:52
【问题描述】:

我在计算的属性上调用 valueforkey 方法时遇到问题。例如:

@interface Value : NSObject
@property(nonatomic,getter = toString,readonly)NSString *stringVal;

-(NSString*) toString;
@end

当我调用 [instanceOfValueClass valueForKey:@"stringVal"] 时,它说它不符合键值。确切的消息是:

[valueForUndefinedKey:]:这个类对于键 stringVal 不符合键值编码。

键值编码是否适用于派生属性?

谢谢

【问题讨论】:

    标签: iphone ios key-value-coding


    【解决方案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"] 可以使用“相同的密钥”。

    【讨论】:

    • @Jignesh:我认为KVC寻找的是getter方法,而不是属性名。
    猜你喜欢
    • 1970-01-01
    • 2011-05-23
    • 1970-01-01
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多