在objective-c iphone中动态设置键值编码的密钥

时间:2012-05-22 20:48:44

标签: iphone xcode nsdictionary

我有一个名为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)我不确定要放在那里以使该错误消失。

感谢您的回复。

1 个答案:

答案 0 :(得分:0)

您已定义valueForUndefinedKey:,这是处理返回值的内容。但是在您的代码段中,您似乎正在尝试为未定义的键设置值。在这种情况下,使用的方法是:

setValue:forUndefinedKey:

一个例子,基于你想要做的事情:

- (void)setValue:(id)value forUndefinedKey:(NSString *)key {
    NSLog(@"Attempting to set value: %@ for key: %@", value, key);
}