【问题标题】:key value coding-compliant for NSObject class?NSObject 类的键值编码兼容?
【发布时间】: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


【解决方案1】:

可能是您使用的是非可变字典而不是 NSMutableDictionary?

【讨论】:

    猜你喜欢
    • 2013-10-11
    • 2013-05-23
    • 2017-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-27
    相关资源
    最近更新 更多