我正在尝试链接一个 UILabel
与 IBOutlet
在我班上创造。
我的应用程序崩溃,出现以下错误。这是什么意思?我该如何解决?
***由于未捕获的异常'NSUnknownKeyException'而终止应用程序,原因:'[<UIViewController 0x6e36ae0> setValue:forUndefinedKey:]:此类不是密钥值,与密钥XXX兼容。
我正在尝试链接一个 UILabel
与 IBOutlet
在我班上创造。
我的应用程序崩溃,出现以下错误。这是什么意思?我该如何解决?
***由于未捕获的异常'NSUnknownKeyException'而终止应用程序,原因:'[<UIViewController 0x6e36ae0> setValue:forUndefinedKey:]:此类不是密钥值,与密钥XXX兼容。
我下载了你的项目。
你得到的错误是
'NSUnknownKeyException',原因:'[<UIViewController 0x3927310> setValue:forUndefinedKey:]:此类不是密钥值的密钥值编码兼容。
这是由 Second
查看控制器 MainWindow.xib
有一类 UIViewController
代替 SecondView
。更改为正确的类可以解决问题。
顺便说一下,在Objective-C中使用像“string”这样的名称是不好的做法。它会引发运行时命名冲突。即使在一次性练习应用程序中也避免它们命名冲突可能很难追踪,您不想浪费时间。
此错误的另一个可能原因是:当将元素从一个控制器复制并粘贴到另一个控制器时,Xcode会以某种方式将该链接保留到原始控制器,即使在编辑并将此元素重新链接到新控制器之后也是如此。
我多次犯过这个错误。虽然TechZen在这种情况下的答案绝对正确,但另一个常见原因是你 更改IBOutlet属性的名称 在您的.h / .m中,您已经连接到笔尖中的文件所有者。
从你的笔尖:
在“引用Outlets”下,确保您的对象仍未连接到旧属性名称...如果是, 单击小'x'删除引用 并再次建立。
如果你使用Storyboard是另一个常见原因,你的UIButton可能有多个分配(解决方案几乎与nib相同):
您将看到此按钮有多个assign / ref。 使用小“x”删除其中一个“Main ...”灰色窗口:
我不得不从模拟器/ iPhone中删除该应用程序以摆脱此错误。
当我尝试为表实现自定义ViewCell时,我遇到了这个错误。当我突出显示XIB的View控制器并连接到CellView中的元素时,导致错误“此类不是键值的关键值编码 - 一旦我删除了它,它就摆脱了错误。
删除下图中的连接。
只需确保您只与表视图单元格建立连接。要检查单击表视图单元格并在INSPECTOR中查找您的连接。
如果它是仅限iPhone的应用程序,而不是通用应用程序,请确保以下字段为空:
目标>摘要> iPhone / iPod部署信息>主界面
如果你在那里指定了一个xib,它会崩溃。
此错误表示已连接的Interface Builder 对象被删除/重命名 在其所有者的来源(文件所有者)。
按住Control键并单击 文件的所有者 在Interface Builder中,如果你看到一个 感叹号 你需要解决这个问题。
在下面的图片中,您可以看到“aRemovedView”右侧有一个感叹号,这是因为我已经删除了IBOutlet视图对象,因为它已在IB中连接。
这会出现以下错误: 由于未捕获的异常'NSUnknownKeyException'而终止应用程序,原因:'[setValue:forUndefinedKey:]:此类不是密钥值编码兼容的密钥 aRemovedView。”
我有同样的问题,虽然TechZen的答案可能确实令人惊讶,但我发现很难适用于我的情况。
最终我通过下面列出的Controller链接标签解决了这个问题 对象 (在下图中突出显示)而不是通过 文件所有者。
希望这可以帮助。
有时这与您的“从目标继承”有关,必须设置该值。使用单个目标应用程序,您只需选择继承自目标。如果您有多个目标,请选择所需目标。
在我的情况下,故事板源代码中的错误,请按照下列步骤操作:
<connections>
例如:
<connections>
<outlet property="mapPostsView" destination="4EV-NK-Bhn" id="ubM-Z6-mwl"/>
<outlet property="mapView" destination="kx6-TV-oQg" id="4wY-jv-Ih6"/>
<outlet property="sidebarButton" destination="6UH-BZ-60q" id="8Yz-5G-HpY"/>
</connections>
如您所见,这些是您的代码变量名称和storyboard布局xml标记之间的连接;)
只有在设备(iPhone)上进行调试时才会发生这种情况。 iOS模拟器工作正常。从Xcode做“Product-> Clean”似乎解决了这个问题,但我不明白为什么。
IBOutlet
一旦 IBOutlet
标签你的ivar是不必要的。UIViewController
?在某些时候你应该打电话 [SecondView initWithNibName:@"yourNibName" bundle:nil];