的setValue:forUndefinedKey:]:

时间:2012-03-30 21:59:58

标签: xcode modalviewcontroller viewcontroller sigabrt

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的变量,所以我不知道为什么我会收到错误...

谢谢

12 个答案:

答案 0 :(得分:34)

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

答案 1 :(得分:9)

Phillip Mills是对的。

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

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

答案 2 :(得分:8)

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

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

只需单击故事板,转到Connections Inspector即可。如果你有一个有问题的插座,你会在插座旁边看到一个惊叹号。删除它。

答案 3 :(得分:5)

由于这是此错误的第一个搜索结果,我决定为像我这样的新手写一个答案。

如果您从按钮中按Ctrl拖动连接,在ViewController中生成代码,然后在不删除连接的情况下删除代码,则会出现此错误。

我收到了这个错误,因为当我想将它们添加为动作时,我意外地添加了几个按钮作为Outlets。我删除了生成的代码但是仍然存在错误的连接。

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

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

enter image description here

答案 4 :(得分:2)

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

这是我的情况。我在一个故事板中寻找不良链接,而且它们是本地化的。

答案 5 :(得分:1)

我遇到了同样的问题:

我之前使用从文本字段到头文件的故事板建立了连接。我后来决定我想重命名对象的连接,不幸的是,我没有正确地断开连接。如果此问题与我的问题相同,则先前存在与按钮的连接,并且标题中的代码已删除,但连接不是。

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

答案 6 :(得分:1)

您可以尝试我用来修复setValue:forUndefinedKey:]:问题的方式。

http://i.stack.imgur.com/PDjub.png

答案 7 :(得分:0)

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

根据你的描述, 在界面构建器中找到newView并右键单击它, 你会看到像loginButton这样的异常。

答案 8 :(得分:0)

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

答案 9 :(得分:0)

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

答案 10 :(得分:0)

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

答案 11 :(得分:0)

此回复相对于提出问题的时间可能要晚一些,但是我只是遇到了这个问题,因此我尝试了此处发布的所有解决方案,但均无济于事。

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

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

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