我试图将UILabel与在类中创建的IBOutlet链接起来。

我的应用程序崩溃与以下错误。

这是什么意思?

我该怎么解决呢?

***终止应用由于未捕获异常'NSUnknownKeyException',原因:'[<UIViewController 0x6e36ae0> setValue:forUndefinedKey:]:这个类不是键值编码兼容的键XXX。'


当前回答

对于连接属性中的所有UI元素,检查outlet及其对应的头文件。h中的属性。 在.h文件中可能缺少一个或多个属性条目。

其他回答

如果您想在Interface Builder中单独的XIB文件中设计一个小的子视图,并且在IB中将它设置为与父视图相同的类,也会出现这个问题。

如果你像这样显示它:

UIViewController *vc = [[UIViewController alloc] initWithNibName:@"NameOfTheSubviewNibFile" bundle:nil];
[self.view addSubview:vc.view];

视图将出现,但如果它将IBOutlets连接到其File Owner,则会得到错误消息。所以,这应该是有效的:

在父视图的代码中,声明一个IBOutlet UIView *mySubview来引用子视图的nib文件中的视图 在子视图的nib文件中,将file Owner连接到视图,并将其设置为mySubview 你可以这样做:

[[NSBundle mainBundle] loadNibNamed:@"NameOfTheSubviewNibFile" owner:self options:nil]
[self.view addSubview:mySubview];

你会没事的!

导致这种情况的另一个原因是,您声明该属性实现为@dynamic,但类无法在父类中找到它。

如果它只是一个iPhone应用,而不是一个通用的应用,请确保以下字段为空:

目标>摘要> iPhone/iPod部署信息>主界面

如果你在这里指定了xib,它会崩溃。

当我试图实现一个表的自定义ViewCell时,我有这个错误。当我突出显示XIB的视图控制器并连接到CellView中的元素时,会导致错误“这个类不是键值编码兼容的键”,一旦我删除了这些,它就摆脱了错误。

删除下图中的连接。

只要确保你只有与表格视图单元格的连接。要检查,单击表视图单元格,并在检查器中寻找您的连接。

这种情况只发生在我在设备(iPhone)上调试时。iOS模拟器运行正常。用Xcode做一个“Product->Clean”似乎解决了这个问题,但我不知道为什么。