我正在尝试将 aUILabel与IBOutlet在我的班级中创建的链接。
UILabel
IBOutlet
我的应用程序因以下错误而崩溃。
这是什么意思?
我该如何解决?
*** 由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[ setValue:forUndefinedKey:]:此类不符合键 XXX 的键值编码。”
我下载了你的项目。
你得到的错误是
‘NSUnknownKeyException’,原因:’[ setValue:forUndefinedKey:]:此类与键字符串不兼容键值编码。’
这是由Second视图控制器MainWindow.xib具有一个类 UIViewController 而不是SecondView. 更改为正确的类可以解决问题。
Second
MainWindow.xib
UIViewController
SecondView
顺便说一句,在 Objective-C 中使用像“字符串”这样的名称是不好的做法。它会引发运行时命名冲突。即使在一次性练习应用程序中也避免使用它们。命名冲突可能很难追踪,您不想浪费时间。
此错误的另一个可能原因是:当将元素从一个控制器复制并粘贴到另一个控制器时,Xcode 会以某种方式保持与原始控制器的链接,即使在将此元素编辑并重新链接到新控制器之后也是如此。
此错误的另一个可能原因:
坏出口。
您已 删除 或 重命名 文件中的出口名称.h。
.h
.xib在文件.storyboard的连接检查器中删除它。
.xib
.storyboard
还有一个可能的原因
(在我的例子中)使用可绑定属性扩展 UIView 并为这些可绑定属性(即阴影、角半径等)设置值,然后从 UIView 扩展中删除这些属性(出于某种原因),但以下内容<userDefinedRuntimeAttributes>仍保留在 xml(的foo.storyboard)中:
<userDefinedRuntimeAttributes>
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>导致问题的那个
</userDefinedRuntimeAttributes>