为什么在我的XIB中添加标签,然后将其链接到我的.h文件中的属性,会导致编码兼容的异常?

时间:2014-01-09 22:32:07

标签: ios xcode exception interface-builder iboutlet

我有一个xib。我给它添加了一个标签并将其链接到一个属性,就像这样。

Image of the label showing up from File's Owner properties, which matches the property to which it is hooked up, in code, for that class.

以通常的CTRL +拖动方式建立连接,按住CTRL,单击标签,然后将其拖到.h文件以提示输入属性名称,然后按“连接”。

当使用内置的笔尖运行应用程序时,这会导致下面的消息崩溃。

***由于未捕获的异常'NSUnknownKeyException'终止应用程序,原因:'[setValue:forUndefinedKey:]:此类不是密钥值编码兼容的密钥whyWontXCodeBehave。'。

  • 离开连接会导致崩溃。
  • 如果删除属性和IBOutlet之间的连接,则不会发生崩溃,但现在我没有引用该控件。

有任何怀疑吗?我确信你,就像我一样,在没有问题的情况下以这种方式连接这些控件/属性。

注意即可。资源包是持有nib的东西。然后,该资源包将用于第三方应用程序。当第三方应用程序显示时,如果保留连接,则会发生崩溃。

之前的研究

  • xib没有使用表格。大多数问题都存在将不正确的属性链接到表的组件的问题。
  • IBOutlet与酒店之间的联系有效。这很简单。我可以移除并重新连接它,如上所述,导致崩溃。其他问题没有建立有效的联系。

2 个答案:

答案 0 :(得分:0)

你的FileOwner是同一个类(即WelcomeController),其中声明了IBOutlet for UILabel(whyWontXCodeBehave)?要进行检查,请单击FileOwner,然后选中“Attribute Inspector”中的“Custom Class”。

同时尝试进行干净的构建。

答案 1 :(得分:0)

我不知道消息来源是什么,但这是我如何修复它。

  1. 完全删除您的派生数据文件夹。您可以转到文件>来访问它。项目设置>单击与“高级”按钮在同一行上的路径旁边的箭头。
  2. 删除Build文件夹,如果它与派生数据文件夹不同。您可以转到文件>来访问它。项目设置>高级>单击底部“产品:”标签旁边的箭头。
  3. 在第三方应用中删除对资源包的所有引用,以及包含相关代码的库。
  4. 删除您可能没有使用的所有引用(例如,Debug-iphoneossimulator与Debug-iphoneos的单独库/包)具有相同的名称。我怀疑在项目设置(标题或库搜索路径)中可能引用了这样的文件夹。
  5. 清除资源包项目和第三方应用程序。
  6. 关闭Xcode,重新启动计算机。
  7. 仅打开资源包项目,并使用连接构建资源包。建立你的相关代码库。
  8. 移动这些文件以替换第三方应用程序中现已删除的等效文件。
  9. 运行第三方应用。
  10. 我最强烈的怀疑是它引用了旧版本的资源包。