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

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

这是什么意思?

我该怎么解决呢?

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


当前回答

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

1 .修改类为UIViewController

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

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

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

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

6重新连接电源插座。

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

其他回答

我有这个发生时,我有一个UIView链接到一个故事板和连接IBOutlet像:

@property (strong, nonatomic) IBOutlet UIView *someView

但是后来,我把UIView做成了一个自定义类,但是忘记改变上面定义的IBOutlet的类名。这是一个奇怪的错误,因为如果自定义视图没有子视图,它不会抱怨,但只要有子视图,它就会显示问题中陈述的错误,但在其中一个子视图上,而不是在问题实际存在的外部UIView上。让我删除和读取所有的子视图试图找到问题,而实际上与子视图无关

我在为表视图原型单元创建的自定义类的所有出口上都遇到了这个错误。出口都正确地连接到故事板,并且Class字段在原型单元格的标识检查器中被正确地命名。

删除和重新创建出口都不起作用。清理构建没有起作用。最后有效的方法是将故事板标识检查器中的Class更改为默认的UITableViewCell,点击Enter,然后将其更改为自定义类的名称。出于某种原因,这奏效了。

线程1:“[setValue:forUndefinedKey:]:这个类不符合键xxx的键值编码。”

你可以在以下情况下得到这个错误:

xib + UITableViewHeaderFooterView

当你使用UITableView显示头/脚它扩展了UITableViewHeaderFooterView并连接到。swift文件和

设置文件的属主

正确的方法:

为containerView设置自定义类

这可能意味着您试图使用开头没有设计的排序描述符。如:

黑array valueForKeyPath: @“distinctUnionOfObjects.self铝”

实际上一定是:

(数组valueForKeyPath: @“@distinctUnionOfObjects.self”)

我在一个有两个目标(有自己的MainWindow XIB)的项目中遇到了类似的问题。对我来说,导致这个错误的根本问题是UIViewController类没有包含在第二个项目的资源列表中。例如,界面构建器允许我在主窗口中指定它。Xib,但在运行时系统无法定位类。

例如,cmd-点击有问题的UIViewController类,并仔细检查它是否包含在“Targets”选项卡中。