我试图将UILabel与在类中创建的IBOutlet链接起来。
我的应用程序崩溃与以下错误。
这是什么意思?
我该怎么解决呢?
***终止应用由于未捕获异常'NSUnknownKeyException',原因:'[<UIViewController 0x6e36ae0> setValue:forUndefinedKey:]:这个类不是键值编码兼容的键XXX。'
我试图将UILabel与在类中创建的IBOutlet链接起来。
我的应用程序崩溃与以下错误。
这是什么意思?
我该怎么解决呢?
***终止应用由于未捕获异常'NSUnknownKeyException',原因:'[<UIViewController 0x6e36ae0> setValue:forUndefinedKey:]:这个类不是键值编码兼容的键XXX。'
当前回答
当我的视图控制器最初有一个.xib文件时,这种情况发生在我身上,但现在是以编程方式创建的。
尽管我已经从这个项目中删除了.xib文件。用户的iPhone/iPad可能包含这个视图控制器的.xib文件。
尝试加载.xib文件通常会导致以下崩溃:
Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIViewController 0x18afe0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key welcomeLabel.'
以编程方式创建时的解决方案可能是这样的:
-(void)loadView {
// Ensure that we don't load an .xib file for this viewcontroller
self.view = [UIView new];
}
其他回答
这可能是引用已重命名或删除的Xib Interface组件的情况。重新引用对我来说很有用。
导致这种情况的另一个原因是,您声明该属性实现为@dynamic,但类无法在父类中找到它。
我得到了同样的错误,当我手动加载一个视图从一个笔尖。结果是我忘记设置视图的所有者。
例如,如果你以以下方式加载一个视图,
let view = Bundle.main.loadNibNamed("MyNibFileName",
owner: nil,
options: nil)?.first as! UIView
然后添加一个IBOutlet, IBOutlet不能被引用,应用程序会因为上面的错误而崩溃。
修复:为视图分配一个所有者。
let view = Bundle.main.loadNibNamed("MyNibFileName",
owner: self,
options: nil)?.first as! UIView
在我的情况下,这是一个错误在故事板源代码,遵循以下步骤:
首先以源代码的形式打开故事板 搜索<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标签之间的连接;)
我已经经历过两次了。
解决方案是重新制作整个故事板,因为我从另一个故事板复制了它(因为它几乎是相同的)