NSMutableDictionary setValue:forUndefinedKey

时间:2014-08-17 19:01:53

标签: ios objective-c nsmutabledictionary key-value-observing kvc

我正在开发iOS应用。我有一个扩展NSObject的类,它定义了1个属性

//.h file
@property (nonatomic,retain) NSMutableDictionary *livedata; 


//.m file
if(self = [super init]){
    self.livedata = [[NSMutableDictionary alloc] init];
    [self.livedata setValue:@"myvalue" forUndefinedKey:@"myUndefinedKey"];
}

我收到此错误。 * 由于未捕获的异常而终止应用程序' NSUnknownKeyException',原因:' [setValue:forUndefinedKey:]:此类与密钥myUndefinedKey不符合密钥值编码。 '

我过去曾为kvc,kvo使用过NSMutableDictionary。是的,我看到该课程不符合kvc。

2 个答案:

答案 0 :(得分:1)

问题是你在调用一个引发异常的方法时会调用它。 setValue:forUndefinedKey:仅在setValue:forKey:引用this article时找不到给定密钥的属性时才会调用[self.livedata setValue:@"myvalue" forKey:@"myKey"]; 。相反,只需致电

{{1}}

答案 1 :(得分:0)

您希望setValue:forKey:不是setValue:forUndefinedKey:

[self.livedata setValue:@"value" forKey:@"key"];

系统调用setValue:forUndefinedKey,该方法可以覆盖。

来自文件:
setValue:forKey:在找不到给定密钥的属性时调用。

“子类可以覆盖此方法以其他方式处理请求。默认实现会引发NSUndefinedKeyException。”