我有一个名为mycallback的课程:
[mycallback setValue:[code objectForKey:@"abc"] forKey:@"abc"];
很多我的控制器都会调用它。那就是我从mysql数据库中提取数据并将其发送给mycallback。所以我可能不知道关键是什么。除此之外,我不想在mycallback类中声明实例变量,因为我希望它分开。
不幸的是,如果上面的代码运行,我收到此消息:
exception 'NSUnknownKeyException', reason: '[<CallbackClass 0x7b6c5d0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key fence.'
所以我想动态设置密钥,但不是在mycallback中。所以我为NSDictionary创建了一个类别并添加了valueForUndefinedKey方法:
- (id)valueForUndefinedKey:(NSString *)key
{
NSLog(@"This key not being called %@", key);
return nil;
}
但是1)valueForUndefinedKey没有被调用,2)我不确定要放在那里以使该错误消失。
感谢您的回复。
答案 0 :(得分:0)
您已定义valueForUndefinedKey:
,这是处理返回值的内容。但是在您的代码段中,您似乎正在尝试为未定义的键设置值。在这种情况下,使用的方法是:
setValue:forUndefinedKey:
一个例子,基于你想要做的事情:
- (void)setValue:(id)value forUndefinedKey:(NSString *)key {
NSLog(@"Attempting to set value: %@ for key: %@", value, key);
}