我如何解决'NSUnknownKeyException'... setValue:forUndefinedKey:]:...不符合键值编码

时间:2012-06-20 11:01:11

标签: ios xcode debugging compiler-errors

好的,我会尝试尽可能简短。我想在我的键盘上方找到一个UIToolbar,我花了一段时间来弄明白,我最终做了,但是当我尝试将功能添加到按钮上一个 * next *和完成时我的程序很快就会编译。

可以在此处看到整个错误消息:

  

2012-06-20 05:36:55.276 KegCop [79460:fb03] * 由于未捕获的异常'NSUnknownKeyException'而终止应用程序,原因:'[setValue:forUndefinedKey:]:此类是对于完成的密钥,不符合密钥值编码。'

     

* 第一次抛出调用堆栈:   (0x134a022 0x1733cd6 0x1349ee1 0xd31022 0xca2f6b 0xca2edb 0xcbdd50 0x5a571a 0x134bdea 0x12b57f1 0x5a426e 0x7adeef 0x7ae03e 0x382d7a 0x382ff8 0x38217f 0x391183 0x391c38 0x385634 0x1f84ef5 0x131e195 0x1282ff2 0x12818da 0x1280d84 0x1280c9b 0x381c65 0x383626 0x2a8d 0x29f5为0x1)   终止调用抛出异常(lldb)

@Abizern建议我应该阅读Apple Doc on Key value coding guide。无论如何,它是超级晚,或超级早,但你看它。更新的项目可在此处找到:https://github.com/ipatch/KegCop

只需下载zip,然后尝试构建,您将看到我在说什么。该错误可能位于 ViewControllerWelcome.m 文件中。

6 个答案:

答案 0 :(得分:62)

查看ViewControllerWelcome对象的storyboard或xib(无论您使用哪个)。此错误的最可能的来源是某些内容与名为done的操作或出口连接,该类在该类的代码中不存在。

答案 1 :(得分:33)

最简单的检查方法是在故事板视图中按住Ctrl并单击您的控制器,并在弹出的窗口中查找一些旁边有黄色警告标记的内容。 只需按下插座名称旁边的(x)即可将其删除。

答案 2 :(得分:3)

如果您正在使用故事板,则只需单击每个ViewController并选择它们的连接检查器。检查是否有任何感叹号(连接丢失)。

正确删除它们。然后再次运行项目。

答案 3 :(得分:0)

我遇到了同样的问题,我使用xib作为viewcontroller,但后来我删除了它。但是在代码中,连接仍然从已删除的xib获得连接。因此,四处走动的方法是为viewcontroller创建一个新的xib。然后问题解决了。

答案 4 :(得分:0)

在我的情况下,它是xcode上的一些奇怪的缓存,即使所有删除的对IBOutlets的引用仍然使它崩溃。 IBOutlets指向我的文件的旧版本,所以甚至没有删除和添加回文件或从我的笔尖删除所有引用插件...

SOLUTION: 关闭xcode 成功,同时清理/深度清理项目可能有所帮助。

答案 5 :(得分:-2)

根据我的情况,我在“其他链接器标志”中添加了-all_load,以防止Xcode剥离我的库二进制代码。