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

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

这是什么意思?

我该怎么解决呢?

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


当前回答

正如@FranticRock提到的,这个帖子真的是一个史诗般的传奇故事。

对我来说

出水口连接正确 “Inherit From Target”有一个正确的值,这意味着模块被正确添加

在我的案例中导致崩溃的原因是标识检查器下的用户定义运行时属性

我有一个视图,以某种方式有三个属性borderColor, borderWidth和cornerRadius

从视图中删除这些属性就解决了这个问题。

其他回答

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

我得到了同样的错误,当我手动加载一个视图从一个笔尖。结果是我忘记设置视图的所有者。

例如,如果你以以下方式加载一个视图,

 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

我的方法和杰拉德·格伦迪类似。在使用XIB创建自定义UITableViewCell时,我错误地将自定义类名称应用到文件的所有者而不是UITableViewCell。将类应用到画布上的UITableViewCell并将IBOutlet属性连接到它上解决了这个问题。

确保你在.m文件中添加了自定义类的实现(甚至是空的),如下所示:

@implementation MySubclass
@end

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