【问题标题】:setValue:forUndefinedKey:]:setValue:forUndefinedKey:]:
【发布时间】:2012-04-14 14:36:32
【问题描述】:
FinalViewWithSending *newView = [[FinalViewWithSending alloc]initWithNibName:@"FinalViewWithSending" bundle:nil];
newView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:newView animated:YES]; //it crashes here with a thread 1 error, SIGABRT error..

上面写着:

"Terminating app due to uncaught exception 'NSUnknownKeyException', 
reason: '[<FinalViewWithSending 0x1bef70> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key loginButton.'"

没有名为 loginButton 的变量,所以我不知道为什么会出错...

谢谢

【问题讨论】:

  • 您的错误相关代码尚未上传,请补充。

标签: xcode modalviewcontroller viewcontroller sigabrt


【解决方案1】:

您收到错误因为没有名为 loginButton 的属性。检查您的 .xib 文件。几乎可以肯定的是,指向指定 loginButton 的 FinalViewWithSending 对象(可能是文件的所有者)的链接不正确,即使它在类代码中不存在。

【讨论】:

  • 没有错误的链接。我检查了。我应该只创建一个 loginButton 变量吗?
  • 我不知道...如果是我,我宁愿找到实际的错误。如果您右键单击 FinalViewWithSending.xib,将其作为源代码打开,然后以文本形式搜索符号会怎样?有时在 xib 中的事情会变得很奇怪,在 Xcode 中不会显示为 UI 元素。
  • 如何将其作为源代码打开?我刚去源代码管理并提交更改......我也找不到它。
  • 如果您按住 Control 单击或右键单击文件名,您应该会得到一个菜单,其中包括 Open As 和一个带有源代码选项的子菜单。
  • 还是什么都没有。我在任何文件的任何地方都找不到 loginButton(我已经检查了所有内容)。有任何想法吗?如果你们愿意,我可以发布崩溃日志(控制台的粗体部分?)谢谢
【解决方案2】:

菲利普米尔斯是正确的。

对于任何搜索的人来说,这里的答案是编辑情节提要并删除指向指定未定义键的任何链接。您必须在外部编辑器中编辑情节提要文件:右键单击层次结构中的情节提要列表,然后单击“在查找器中显示”或您拥有的内容。在文本编辑器中打开,通过搜索删除上述链接,保存并返回 Xcode。没有更多问题了。

当您不正确地从视图控制器中删除某些内容时会发生这种情况。

【讨论】:

  • 当我仍然是 UIImageView 时发生在我身上。
  • 对于这里的新手,您不必打开文本编辑器并编辑情节提要。 View->Utilities->Show Connections Inspector 点击不同的按钮,查看坏的连接
【解决方案3】:

如果您有任何本地化,请在所有故事板中搜索错误链接(展开故事板以查找本地化故事板)。

这就是我的情况。我一直在寻找一个故事板中的错误链接,它们位于本地化的故事板中。

【讨论】:

    【解决方案4】:

    在这里同意 - 菲利普米尔斯是正确的。

    有人提到在文本编辑器中打开故事板 - 这不是必需的。

    只需单击情节提要,转到 Connections Inspector。如果您的插座有问题,您会在插座旁边看到一个感叹号。删除它。

    【讨论】:

    • 修复有问题的插座解决了我的问题。这是我要做的,单击引发此错误的 ViewController,通过在 Xcode 8.1 中转到 View->Utilities->Show Connections Inspector 转到 Connections Inspector 或简单地⌥⌘6.
    【解决方案5】:

    您可以使用关联对象来避免子类化。至于 setValue:forKey: 和 setValue:forUndefinedKey:,请查看头文件(NSKeyValueCoding.h)了解详情。

    根据您的描述, 在您的界面生成器中找到 newView 并右键单击它, 你会看到类似 loginButton 的异常。

    【讨论】:

      【解决方案6】:

      今天我在工作,我提出了同样的错误,我使用 Phillip Mills 的响应是正确的,我在一个 ViewController.xib 中有一些标签没有被分配链接,我有五个坏链接,一旦分配链接,一切正常,感谢 Phillip Mills 的回答。

      【讨论】:

        【解决方案7】:

        我遇到了同样的问题:

        我之前使用情节提要从文本字段到头文件进行了连接。后来我决定要重命名对象的连接,不幸的是,我没有正确断开连接。如果这个问题和我的一样,之前有一个按钮的连接,并且删除了header中的代码,但连接没有。

        检查您正在连接的视图中的对象连接。

        【讨论】:

          【解决方案8】:

          转到 FinalViewWithSending 视图控制器的 xib 的连接检查器并删除登录按钮的引用。之后它将运行。试试吧... :)

          【讨论】:

            【解决方案9】:

            可能,您之前创建了 LoginButton,Cmd+Shift+F 并找到“LoginButton”并删除引用插座并重新构建。

            【讨论】:

              【解决方案10】:

              你可以试试我以前解决setValue:forUndefinedKey:]:问题的方法。

              【讨论】:

                【解决方案11】:

                由于这是这个错误的第一个搜索结果,所以我决定为像我这样的菜鸟写一个答案。

                如果您使用 Ctrl 从 Buttons 中拖动连接,这会在您的 ViewController 中生成代码,然后您只删除代码而不删除连接,您将收到此错误。

                我收到此错误是因为我不小心将一些按钮添加为 Outlets,而我想将它们添加为 Actions。我删除了生成的代码,但不良连接仍然存在。

                要查找和删除它们,请查看->实用程序->显示连接检查器

                然后单击您拥有的不同按钮并单击 x 以删除不良连接。

                【讨论】:

                  【解决方案12】:

                  相对于提出问题的时间,此回复可能较晚,但我刚刚遇到了这个问题,我尝试了此处发布的所有解决方案,但没有一个奏效。

                  这是我的解决方案,将来可以帮助任何人。

                  首先是问题,:我使用了一个自定义单元类并建立了连接,然后我的应用程序一切正常,然后我重命名了我的自定义单元类运行我的应用程序但由于 setValue:forUndefinedKey 而崩溃: ] 错误。

                  我的解决方案:点击 .xib 文件,选择身份检查器并在自定义类 -> 类标签中键入新的命名类。 应用错误已解决。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2015-09-16
                    • 2012-06-05
                    • 2014-12-10
                    • 2016-02-27
                    • 2020-08-31
                    • 2014-07-03
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多