我试图将UILabel与在类中创建的IBOutlet链接起来。
我的应用程序崩溃与以下错误。
这是什么意思?
我该怎么解决呢?
***终止应用由于未捕获异常'NSUnknownKeyException',原因:'[<UIViewController 0x6e36ae0> setValue:forUndefinedKey:]:这个类不是键值编码兼容的键XXX。'
我试图将UILabel与在类中创建的IBOutlet链接起来。
我的应用程序崩溃与以下错误。
这是什么意思?
我该怎么解决呢?
***终止应用由于未捕获异常'NSUnknownKeyException',原因:'[<UIViewController 0x6e36ae0> setValue:forUndefinedKey:]:这个类不是键值编码兼容的键XXX。'
当前回答
我也有这个问题,这是由于重命名一个视图通过创建一个新的出口。你可能在故事板中有旧的连接出口。
您需要做的是从故事板中删除旧的出口。
转到故事板。 点击“Show Code Review”按钮(上面有<- ->符号的按钮,就在Show /hide导航器的左边)。 搜索“connections”标签。 在“connections”标签中寻找“outlet”标签,并将“property”属性设置为您在Exception中获得的名称。 去掉那个出口标签。 点击“Command + B”,享受吧!
其他回答
就我而言,
[[NSBundle mainBundle] loadNibNamed:@"NameOfTheSubviewNibFile" owner:self options:nil]
这就是原因。
将此替换为initWithNibName,已解决。
我在一个有两个目标(有自己的MainWindow XIB)的项目中遇到了类似的问题。对我来说,导致这个错误的根本问题是UIViewController类没有包含在第二个项目的资源列表中。例如,界面构建器允许我在主窗口中指定它。Xib,但在运行时系统无法定位类。
例如,cmd-点击有问题的UIViewController类,并仔细检查它是否包含在“Targets”选项卡中。
我也遇到过同样的问题,虽然TechZen的答案可能确实令人惊讶,但我发现它很难适用于我的情况。
最终,我解决了这个问题,通过对象下列出的控制器(下图中突出显示)链接标签,而不是通过文件所有者。
希望这能有所帮助。
看看其他的答案,似乎有很多事情可以导致这个错误。这里还有一个。
如果你
拥有自定义视图 添加了@IBInspectable属性 然后又删除了
那么您也可能会得到类似的错误
在[您的自定义]上设置(xxx)用户定义的被检查属性失败 视图)……:这个类不是键值编码兼容的 [xxx]。
解决方案是删除旧属性。
打开类的Identity检查器,在User Defined Runtime Attributes下选择属性名,然后按减号按钮(-)。
通过在Storyboard/xib接口中选择有问题的对象并打开连接检查器(视图->Utilities->显示连接检查器)来检查是否有丢失的引用出口。如果您确实删除了不需要的连接,您应该可以继续。