应用程序因未捕获的异常而终止,原因是:'[<UIApplication 0x9e37580> setValue:forUndefinedKey:]:找不到对应的键值。

4

我正在使用Xcode制作一个应用程序,在此过程中遇到了错误:

"Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key achiev"

最近,我已经搜索了数小时,但似乎没有找到与我的情况相匹配的答案。这个错误发生在我添加新对象并从.h文件中删除一些对象时,但是我已经反复检查了每个输出口是否正确连接。没有任何连接是虚假连接或未连接的,一切都很好。当我尝试删除错误代码中提到的关键字时,它会转到下一个关键字,如此循环,基本上每个连接都是不好的。我已正确连接视图(我认为),因为当我在.h文件中添加新输出口时,我能够在xib文件中看到并连接它,但每次打开应用程序时仍然会出现此错误。

最近,我将视图控制器ID更改为XcodeProjectViewController,并检查了所有文件(h、m和xib)以确保它们匹配。


1
你可能曾经有一个名为achievIBOutlet并在IB中将其连接,然后稍后删除了该属性,但是该连接仍然存在于IB中,你必须进入并删除它。 - Dan F
为了让事情变得更容易,您可以在项目导航器中右键单击xib/storyboard文件,然后选择“打开方式->源代码”,并搜索“achiev”以找到有问题的链接。 - Dan F
我已经考虑过这个问题并进行了检查,但正如我所说,我已经仔细检查过了,确实在H文件和Xib文件中有所有的IBOutlets连接。在Xib文件中连接的所有内容都在.h文件中有一行代码,如果我删除一个连接及其在xib文件中的引用,它会继续到下一个可用的键,并给出下一个键也有问题的错误提示,但它肯定是正确连接的。除非在xib文件中有比“连接检查器”更好的方法来查看连接。 - Simon Andersson
你尝试过以源代码形式打开并查看是否有“achiev”属性的出口入口吗? - Dan F
我将其作为源代码打开,按下cmd+f并输入achiev,确实找到了几个匹配项。 - Simon Andersson
你的代码中是否声明/合成了该属性?更重要的是,是否在正确的位置上。 - Dan F
1个回答

13

在我的最新应用程序Label Dispenser PRO中,我遇到了这个错误信息。这很烦人,因为所有的代码都看起来没问题(因为它们确实没有问题)。

经过几个小时的调查,结果发现(对于我的情况)问题是我在目标的摘要区域的“iPad开发信息”部分中意外地指定了XIB文件作为主界面。以下是说明此位置的图片: enter image description here

删除此字段解决了问题。我想这是因为编译器会感到困惑,因为在AppDelegate中基于if语句评估“if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)”手动呈现了XIB。

希望这能帮助某些人。干杯。


这是我的问题(Xcode 5),线索是异常发生在UIApplication中,而不是附加到XIB的视图控制器。 - macasas
1
哈利路亚!你是救命恩人。我在XCode 5中也遇到了同样的问题,自己永远也想不出来。 - Simo A.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接