我的程序中有一个简单的循环:
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/