我正在开发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。
答案 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
。”