【问题标题】:Class is not key value coding-compliant for the key类与键的键值编码不兼容
【发布时间】:2013-10-11 19:17:06
【问题描述】:

我的应用在启动时崩溃并出现以下错误:

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

这是一个我继承并重做的项目。我最初以为 tableViewChannels 是一个旧数组,但我在 XCode 中搜索了整个项目,它没有出现在任何地方。

我用我最喜欢的文本编辑器进入故事板查看原始 XML,确实找到了两个“tableViewChannels”实例,它们似乎是旧的 IBOutlets(它们实际上不再出现在可视故事板中)。我删除了两者,保存,清理了构建文件夹,重新启动了 XCode,但仍然崩溃并出现完全相同的错误。我对这段代码仍然潜伏在项目中的什么地方感到困惑。我很感激任何帮助。谢谢!

【问题讨论】:

  • 应该补充一下,我还打破了所有的转场和连接,并重新制作了它们。没有骰子。
  • tableViewChannels 在某处仍有待处理的出口。深入挖掘。
  • 谢谢,但是如果我在原始 XML 中搜索过它并且它不存在,我应该去哪里看?
  • 嗯,一点点更新......我在 XCode 中将它作为源代码打开,并且出口仍然存在!它是否覆盖了我在文本编辑器中所做的事情?现在我真的很困惑......但我会尝试在那里删除它们,看看它是否是一个修复。

标签: ios storyboard


【解决方案1】:

我不完全确定,但这个问题可能是因为在你的故事板/xib 中必须有一个 IBOutlet,它是早期连接的变量,但后来这个变量被删除了..请检查每个 xib,看看你是否有这个..否则更好的方法是..在xcode中键入“tableViewChannels”..选择任何尝试重构它的单词..这将列出它要重构的所有文件..包括xibs。 :) 这样你就可以确定你的 xibs 中是否有 tableViewChannels

【讨论】:

  • 谢谢,但我相信我已经做到了……tableViewChannels 不会出现在故事​​板的任何地方,无论是在视觉上还是在我搜索原始 XML 时。即使是未使用的插座也必须出现在 XML 中,对吧?
  • 只是尝试重构...因为我遇到了类似的问题,我通过仅重构找到了 IBOutlet...:)
  • 嗯,你是对的。我不知道为什么,但是当我在 XCode 中打开故事板作为源(我刚刚发现这是可能的)时,出口仍然存在,即使我已将其删除并保存在我的文本编辑器中......谁知道呢。无论如何,它是固定的。谢谢!!
  • :) 快乐的编码伙伴.. :)
【解决方案2】:

您可以通过在终端中搜索项目目录来查看 Xcode 是否有任何仍然包含“tableViewChannels”的元数据文件:

cd [path to project]
grep -r --include='*' tableViewChannels .

【讨论】:

    【解决方案3】:

    三步轻松解决:

    1. 二次点击故事板文件,在我的例子中是“Storyboard.storyboard”
      点击“打开方式”,然后点击“源代码”

    2. 在键盘上按“Command”+“F”,找到键,在本例中为“tableViewChannels”

    3. 找到后,选择该行并将其擦除。

    如前所述,故事板中的连接存在问题,试图连接已删除或不存在的属性。几乎总是,该属性存在并且在不知道使用情节提要对您的应用程序造成的崩溃的情况下被删除。

    【讨论】:

      【解决方案4】:

      有同样的问题,没有要删除的出口,这只是一个 XCode 问题,通过删除派生数据和清理项目得到了解决。

      【讨论】:

        猜你喜欢
        • 2013-05-23
        • 2017-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-27
        • 2017-01-23
        • 2011-03-17
        • 2012-09-24
        相关资源
        最近更新 更多