我试图将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];
}

其他回答

我在为表视图原型单元创建的自定义类的所有出口上都遇到了这个错误。出口都正确地连接到故事板,并且Class字段在原型单元格的标识检查器中被正确地命名。

删除和重新创建出口都不起作用。清理构建没有起作用。最后有效的方法是将故事板标识检查器中的Class更改为默认的UITableViewCell,点击Enter,然后将其更改为自定义类的名称。出于某种原因,这奏效了。

"这个类不符合键值编码" 我知道有点晚了,但我的答案是不同的,所以我认为它需要张贴,我推错了第二个控制器的方式,这里是样本

错误的推控制器方式

UIViewController* controller = [[UIViewController
 alloc]initWithNibName:@"TempViewController" bundle:nil];
         [self.navigationController pushViewController:controller animated:true];

正确的方法

TempViewController* controller = [[TempViewController
 alloc]initWithNibName:@"TempViewController" bundle:nil];
         [self.navigationController pushViewController:controller animated:true];

我没有找到如上的答案,所以它可能可以帮助一些有同样问题的人

线程1:“[setValue:forUndefinedKey:]:这个类不符合键xxx的键值编码。”

你可以在以下情况下得到这个错误:

xib + UITableViewHeaderFooterView

当你使用UITableView显示头/脚它扩展了UITableViewHeaderFooterView并连接到。swift文件和

设置文件的属主

正确的方法:

为containerView设置自定义类

我因为不同的原因遇到了同样的问题:我使用主故事板作为启动屏幕文件。我猜如果你使用一个故事板作为启动屏幕文件,它不应该连接到视图控制器,因为它还没有被加载。

对于我来说,我必须单击文件的Owner对象并导航到连接并删除有问题的连接