【发布时间】:2010-04-08 04:50:46
【问题描述】:
我创建了一个加载 plist 的单例类。当我尝试设置一个值时,我不断收到此错误:
[<MyPlist 0x1917bc0> setValue:forUndefinedKey:]: 此类不符合键测试的键值编码。'
我在 plist 文件中有一个键。该键名为“test”并且没有与之关联的值。我这样设置值:
[[PlistManager sharedManager].plist setValue:@"the title value" forKey:@"test"];
我查看了 set plist 字典并从 PlistManager 中看到了这个:
po self.plistDictionary
{
test = "";
}
当我将 PlistManager 留在调试器中时,我得到了错误。 PlistManager 是 NSObject 类型。所以没有xib。关于我需要做什么的任何想法?
【问题讨论】:
-
plist 成员是 NSDictionary 吗?
-
请注意,如果
plist实际上是NSMutableDictionary,则使用setObject:forKey:比使用setValue:forKey:更有效,尽管两者都可以。 -
@Barry:你确定这仍然是真的吗?我认为 NSDictionary 属于优化得相当好的类。
-
@Georg:我希望它得到很好的优化,但文档指出 valueForKey:/setValue:forKey: 在调用 objectForKey:/setObject:forKey: 之前对键进行了一些额外的处理,所以它必须至少稍微降低效率。与往常一样,分析您的代码以确定差异是否重要!
-
@Barry:谢谢,不知道。
标签: iphone objective-c cocoa-touch plist