小编典典

Xcode - 如何修复“NSUnknownKeyException”,原因:“此类不符合键 X 的键值编码”错误?

all

我正在尝试将 aUILabelIBOutlet在我的班级中创建的链接。

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

这是什么意思?

我该如何解决?

*** 由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[
setValue:forUndefinedKey:]:此类不符合键 XXX 的键值编码。”


阅读 149

收藏
2022-02-25

共1个答案

小编典典

您的视图控制器可能在您的 xib 中有错误的类。

我下载了你的项目。

你得到的错误是

‘NSUnknownKeyException’,原因:’[
setValue:forUndefinedKey:]:此类与键字符串不兼容键值编码。’

这是由Second视图控制器MainWindow.xib具有一个类 UIViewController 而不是SecondView.
更改为正确的类可以解决问题。

顺便说一句,在 Objective-C
中使用像“字符串”这样的名称是不好的做法。它会引发运行时命名冲突。即使在一次性练习应用程序中也避免使用它们。命名冲突可能很难追踪,您不想浪费时间。

此错误的另一个可能原因是:当将元素从一个控制器复制并粘贴到另一个控制器时,Xcode
会以某种方式保持与原始控制器的链接,即使在将此元素编辑并重新链接到新控制器之后也是如此。

此错误的另一个可能原因:

坏出口。

您已 删除重命名 文件中的出口名称.h

.xib在文件.storyboard的连接检查器中删除它。

还有一个可能的原因

(在我的例子中)使用可绑定属性扩展 UIView 并为这些可绑定属性(即阴影、角半径等)设置值,然后从 UIView
扩展中删除这些属性(出于某种原因),但以下内容<userDefinedRuntimeAttributes>仍保留在
xml(的foo.storyboard)中:

<userDefinedRuntimeAttributes>
  <userDefinedRuntimeAttribute type="color" keyPath="shadowColor">
      <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
  </userDefinedRuntimeAttribute>
  <userDefinedRuntimeAttribute type="number" keyPath="shadowOpacity">
      <real key="value" value="50"/>
  </userDefinedRuntimeAttribute>
  <userDefinedRuntimeAttribute type="point" keyPath="shadowOffset">
      <point key="value" x="5" y="5"/>
  </userDefinedRuntimeAttribute>
  <userDefinedRuntimeAttribute type="number" keyPath="shadowRadius">
      <real key="value" value="16"/>
  </userDefinedRuntimeAttribute>
  <userDefinedRuntimeAttribute type="number" keyPath="borderWidthValue">
      <real key="value" value="0.0"/>
  </userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>

解决方案:
右键单击foo.storyboard>以源代码打开>通过keyPath搜索(即shadowRadius)>删除</userDefinedRuntimeAttributes>导致问题的那个

2022-02-25