我的程序中有一个简单的循环:

for (Element *e in items)
{
    NSDictionary *article = [[NSDictionary alloc] init];
    NSLog([[e selectElement: @"title"] contentsText]);
    [article setValue: [[e selectElement: @"title"] contentsText] forKey: @"Title"];

    [self.articles insertObject: article atIndex: [self.articles count]];
    [article release];
}

它使用ElementParser库从RSS提要中制作值字典(除了“title”(我已省略)以外还有其他值)。 self.articles是一个NSMutableArray,它将所有字典存储在RSS文档中。

最后,这应该产生一个字典数组,每个字典都包含我需要的关于该对象在任何数组索引处的信息。当我尝试使用setValue:forKey:时,它给了我
this class is not key value coding-compliant for the key "Title"
错误。这与Interface Builder无关,全部都是代码。为什么会出现此错误?

最佳答案

首先,当您应该使用-setValue:forKey:时,您正在字典上使用-setObject:forKey:。其次,您正在尝试对NSDictionary(这是一个不可变的对象)进行突变,而不是对NSMutableDictionary进行修改。如果您改用-setObject:forKey:,则可能会收到一个异常,告诉您字典是不可变的。将您的article初始化切换到

NSMutableDictionary *article = [[NSMutableDictionary alloc] init];

它应该工作。

关于objective-c - NSDictionary setValue:forKey:—获取 “this class is not key value coding-compliant for the key”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8023829/

10-13 09:18