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

好的,我会尽量使这个简短。 我想要一个UIToolbar在我的键盘上面,我花了一段时间才弄清楚,最后我做了,但是当我试着向前一个 * next *button添加函数,并且我的程序很快就不能编译了。

整个错误信息可以在这里看到:

2012-06-20 05:36:55.276 KegCop [79460:fb03] *由于未捕获的exception'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)终止叫做抛出exception(LLDB)

@Abizernbuild议我应该阅读苹果文档关键值编码指南 。 无论如何,这是超晚,或超早期,但你看看它。 更新的项目可以在这里find: https : //github.com/ipatch/KegCop

只需下载zip文件,然后尝试构build,您将看到我在说的内容。 该错误可能在ViewControllerWelcome.m文件中的某处。

ViewControllerWelcome对象中查看您的故事板或xib(无论您使用的是哪一个)。 这个错误的最可能的来源是某些东西与被称为done的动作或出口有连接,这个动作或出口在该类的代码中不存在。

检查的最简单的方法是在故事板视图中Ctrl +点击你的控制器,并在结果popup窗口中find一些其旁边有黄色警告标记的东西。 只需按下出口名称旁边的(x)即可将其删除。

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

删除它们,然后再次运行你的项目。

我遇到了同样的问题,我使用了一个xib的视图控制器,但后来我删除它。 但是在代码中,连接仍然从被删除的xib中获得连接。 所以走路的方式是为viewcontroller创build一个新的xib。 然后问题解决了。

在我的情况下,它是一些奇怪的Xcodecaching,即使所有删除引用IBOutlets仍然使其崩溃。 IBOutlets指向我的文件的旧版本,所以甚至没有删除和添加回文件或从我的笔尖删除所有参考sockets工作…

SOLUTION: closuresxcode取得了诀窍, 清理/深入清理项目可能有帮助。

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