UIViewController不是密钥XXXXX的密钥值编码兼容。 IB中没有错误的连接

时间:2011-10-16 03:58:14

标签: ios xcode

从主视图控制器显示EditViewController时出现运行时错误:

'[<EditViewController 0x7fbef90> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key saveChanges.'

我已经完成了我能想到的所有不同的Google / Stack Overflow搜索,并且我的所有结果都指向Tab Bar或Interface Builder中的错误连接。我的项目没有标签栏,我从笔尖中的每个对象中删除了每个连接(除了从File的所有者,EditViewController到视图)。 EditViewController实际上有一个名为-(IBAction)saveChanges的方法。

这让我发疯,我无法弄明白我到底应该做些什么。提前谢谢。

3 个答案:

答案 0 :(得分:7)

您可能没有从顶部viewIBOutlet的任何无效连接,但请检查File's OwnerFirst Responder是否有IBAction个与注释掉或不存在的方法的连接。

另一个想法是手动断开连接并重新连接每个连接。我遇到过在IB中连接后将IBAction方法从- (IBAction)doStuff更改为- (IBAction)doStuff:(id)sender的问题,但是当它应该说doStuff时,连接仍然显示doStuff:。那个冒号看起来不是很多(而且难以在IB中区分)但是它将动作改为@selector(doStuff),这是针对一种不存在的方法。

重新连接不会受到影响,并成为我针对大多数xib问题的第一个故障排除步骤。


找到它的另一个可靠方法是grep(来自终端):

[ 22:20 jon@host ~ ]$ grep -RH "saveChanges" /path/to/${PROJECT_DIR}/*

File's Owner Connections

First Responder Connections

答案 1 :(得分:2)

我尝试将连接添加到UITableViewCell的笔尖时发现此问题 文件所有者已设置为自定义UITableViewCell类。但不是那样,像往常一样:从视图直接拖入.h文件,你必须设置UITableViewCell对象的类。然后,将东西连接到该对象;不是文件的所有者(即使它们是下面的同一个自定义类)。

答案 2 :(得分:0)

我解决了这个问题,但如果您遇到同样的问题,我建议先尝试上述任何一种方法,因为我很费时间。我将EditViewController.h / .m / .xib移动到我的桌面并创建了新的EditViewController.h / .m / .xib。然后我手工重建xib并将原始代码复制/粘贴到新的代码中。谢天谢地,我的xib并不太复杂。