8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

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

RJS 1月前

114 0

我正在尝试将 UILabel 与我的类中创建的 IBOutlet 链接起来。我的应用程序崩溃并出现以下错误\'*** 由于未捕获的异常'NSUnknownKeyException' 而终止应用程序,...

我正在尝试将 a UILabel IBOutlet 我课堂上创建的 a 联系起来。

我的应用程序崩溃并出现以下错误\'

*** 
Terminating app due to uncaught exception
'NSUnknownKeyException', reason: 
'[<UIViewController 0x6e36ae0> setValue:forUndefinedKey:]: 
this class is not key value coding-compliant for the key XXX.'

这是什么意思?我该如何解决它?

帖子版权声明 1、本帖标题:Xcode - 如何修复“NSUnknownKeyException”,原因:'…此类不符合键 X 的键值编码' 错误?
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由RJS在本站《uitableview》版块原创发布, 转载请注明出处!
最新回复 (0)
  • pedrotorres 是对的。是的,这是对的。如果您正在执行 UITableViewCell,请在 IB 中记住将文件的所有者设为 NSObject,并将 UITableViewCell 的类设为您定义的 .h 类。

  • 您应该注意到错误消息中的键名(原作者称其为“XXXX”)是您在 nib 文件中为某个内容指定的名称。这应该有助于缩小您的搜索范围。

  • 我提交了 rdar://22105925 请求 Apple 在构建时让这些错误更加明显。:)

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

    我下载了你的项目。

    你收到的错误是

    ‘NSUnknownKeyException’,原因:‘[ setValue:forUndefinedKey:]:此类不符合键字符串的键值编码。'

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

    顺便说一句,在 Objective-C 中使用 \'string\' 这样的名称是一种不好的做法。它会导致运行时命名冲突。即使在一次性练习应用中也要避免它们。命名冲突可能很难追踪,你不想浪费时间。

    导致此错误的另一个可能原因是:当将元素从一个控制器复制并粘贴到另一个控制器时,即使在编辑并将该元素重新链接到新控制器之后,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> 导致问题的内容

  • 另外,不要忘记将 nib 的 \'view\' 出口连接到文件所有者的视图出口(从 UIViewController 继承的自定义类的视图出口)。这可以通过将控件从 \'Place Holders\' 下的 \'File's Owner\' 拖到 \'Objects\' 下的 \'view\' 并选择视图出口来完成。

  • 我已确保所有类都已设置,但 NSUnknownKeyException 仍然出现 :(

  • 我甚至没有使用 Interface Builder,但仍然收到此错误。知道发生了什么吗?

  • 没关系。这是因为两个原因:Xcode 仍在访问我的主故事板,即使它已从项目中删除,并且模拟器已将其缓存。我强烈不建议使用故事板或 NIB——它们非常成问题。

  • 引用 10

    @Josh Lol。每次我鼓起勇气在 xcode 中创建原生应用时,我总会花上一整天的时间试图弄清楚如何做。我是一名 ac# 开发人员,所以最近我一直在关注 Xamarin 和 Telerik (nativescript) 提供的产品。

  • 您的 xib 中的连接可能存在问题。

    我多次遇到过此错误。虽然 TechZen 的答案在这种情况下是完全正确的,但另一个常见原因是当您 .h/.m 中已连接到 nib 中的文件所有者的 IBOutlet 属性的名称

    从你的笔尖:

    1. 选择 IB 中的对象并转到“连接检查器”。
    2. p2

      \'进入

    如果你使用 Storyboard,另一个常见原因是你的 UIButton 可能有多个分配(解决方案几乎与 nib 相同):

    1. 打开故事板并右键单击 UIButton
    2. p4

      \'例子

  • 谢谢!在我的例子中,我有 2 个出口指向同一个视图,删除旧的出口并将视图连接到新的出口即可结束异常。

  • 我的重复了两次。我从专业版(精简版)拖放后开始断开每个链接,以为它挂在另一个项目中的连接上。当我遇到重复项时,需要点击 3 次才能断开连接,我真希望我 3 天前就这样做。哦,这就是开发人员的生活。

  • 我也遇到过这个问题。不要忘记检查特定视图中的插座连接,而不是只检查超级视图。就我而言,超级视图没有显示错误的连接 =/

  • NS40 1月前 0 只看Ta
    引用 15

    我有一个类似的错误,我将一个按钮插座连接到错误的 ViewController swift 文件,而该文件的页面尚未使用 GUI 创建

  • 有时这与您的“从目标继承”有关,必须设置该值。对于单目标应用程序,您只需选择“从目标继承”。如果您有多个目标,请选择所需的目标。

    enter image description here

  • 这个答案对一个特定案例很有帮助。我必须继续处理一个具有多个目标的旧 obj-c 项目。我在 Swift 中创建了一个自定义 UITableViewCell,但遇到了同样的错误。通过启用“从目标继承”,它就起作用了。谢谢!

  • 我填写了类名,但最后没有按“Enter”键,因此 IDE 没有自动检查此标志。浪费了一个小时。谢谢。

  • 当我尝试为表格实现自定义 ViewCell 时,出现了此错误。当我突出显示 XIB 的 View controller 并连接到 CellView 中的元素时,出现了错误“此类不符合该键的键值编码”,一旦我删除这些元素,错误就会消失。

    删除下图中的连接。Delete the connections in inspector when File Owner is highlighted

    只需确保您只与表视图单元格有连接即可。要检查,请单击表视图单元格,然后在 INSPECTOR 中查找您的连接。

    The connection should be in here when Table View Cell is highlighted

  • 这对我来说很管用,非常感谢。当在左列中选择“文件所有者”时,我删除了连接,然后选择了我的自定义单元格并重新连接它们。成功了!

返回
作者最近主题: