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

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

这是什么意思?

我该怎么解决呢?

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


当前回答

我不得不从模拟器/iPhone中删除应用程序来消除这个错误。

其他回答

如果你有一个带有iboutlet的自定义UIViewController子类,它会导致问题,我发现唯一能消除错误的步骤是

1 .修改类为UIViewController

断开所有的插座(它们现在都有黄色警告三角形)-仅仅断开有问题的插座可能就足够了。

.3执行所有标准步骤-↑⌘K,删除派生数据(,祈祷垫,担忧珠)

.4启动应用程序-进入有问题的场景。

.5关闭应用程序,返回接口生成器,将类更改为自定义类名。

6重新连接电源插座。

启动应用程序&这通常会清除键值遵从性问题。

在我的例子中,它是一个IBOutlet在ViewController中的属性名。m被改变了,但是Storyboard中的那个没有改变。在ViewController中重新引入IBOutlet。M每ctrl拖动解决了这个问题。我还注意到在XCode中找到这种“孤立”iboutlet的方法:(请看图片)那些不是“孤立”的iboutlet有同心圆而不是行号。

另一个棘手的例子:

在IB中,将ViewController添加到storyboard,删除它的视图,并将自定义类设置为“MyViewController”,以便从MyViewController.xib实例化视图

将Storyboard ID指定为相同的“MyViewController”会导致异常。

将故事板ID更改为其他名称可以解决该问题。

NSUnknownKeyException error

'NSUnknownKeyException', reason: this class is not key value coding-compliant for the key

我得到这个错误时。xib文件(例如。TableViewCell.xib)具有与单元格类相同的名称(例如。TableViewCell.swift)

正确的做法是:

TableViewCell.swift -> View.swift <-> View.xib

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