无法解决'Class不符合键值编码'

时间:2014-06-23 20:01:04

标签: ios xcode interface-builder uilabel

我使用Interface Builder创建了一个包含XIB文件和UILabel的类。 UILabel与相应的.h类中的IBOutlet相关联 我删除了XIB文件,但现在我在执行时收到以下错误消息:

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

我尝试清理项目,删除项目中对此IBOutletName的所有引用,尝试在代码中使用Grep查找此名称,但仍然存在问题。知道我在哪里找到这个名字并删除它吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

要查找名称的使用位置,请首先在代码中键入插座。如果Xcode确定该插座有连接,它将填充左边距中的圆圈。点击圆圈,您应该会看到类似这样的内容

enter image description here

为了将来参考,在从代码中删除相应的IBOutlets / IBActions之前,应始终删除xib或storyboard中的所有连接。为此,

  • 打开xib
  • 选择文件所有者
  • 打开“连接”检查器
  • 删除所有连接

然后转到源代码,并确认没有相应的IBOutlets / IBActions在左边距中填充了圆圈。

enter image description here


如果问题仍然存在,删除构建目录并从设备中删除应用程序可能会有所帮助。

删除构建目录

  • 打开Xcode(但不要打开项目)
  • Window菜单中,选择Organizer
  • 选择组织者窗口顶部的Projects
  • 右键单击左侧列表中的项目名称
  • 从弹出菜单中选择Remove from Organizer...
  • 点击Delete

答案 1 :(得分:0)

似乎有时可能会出现一些错误。对我来说没有任何帮助,因为我在xib中拥有一切正确,但在我从设备清理和卸载应用程序后,一切都恢复了。所以不知道是干净还是卸载,但两者都有帮助。