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

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

这是什么意思?

我该怎么解决呢?

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


当前回答

我犯了个愚蠢的错误。所以我决定在这里分享,希望这能帮助到其他像我一样的人。

我在我的项目中有另一个子模块,我在主模块中命名了一个与另一个类同名的新类,我的新类没有xib文件(100%由代码),但主模块中的另一个类有xib文件。我认为Xcode在主模块中的xib文件错误地链接了新类。

坠机的原因与消息:

这个类对于键tableView来说不符合键值编码。

其他回答

在我的例子中,是模块被指定到错误的目标。简单地删除模块名并从目标中检查Inherit module就可以了。

我犯了个愚蠢的错误。所以我决定在这里分享,希望这能帮助到其他像我一样的人。

我在我的项目中有另一个子模块,我在主模块中命名了一个与另一个类同名的新类,我的新类没有xib文件(100%由代码),但主模块中的另一个类有xib文件。我认为Xcode在主模块中的xib文件错误地链接了新类。

坠机的原因与消息:

这个类对于键tableView来说不符合键值编码。

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

1 .修改类为UIViewController

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

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

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

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

6重新连接电源插座。

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

另一个棘手的例子:

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

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

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

我的麻烦的原因,是我复制了一个故事板文件(Xcode之外,如果我没有记错),然后所有视图控制器在复制的文件有相同的对象id在原始文件。补救办法是复制粘贴视图控制器,然后它们将获得一个新的object-ID。您可以在Identity Inspector中看到object-ID。