从主视图控制器显示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
的方法。
这让我发疯,我无法弄明白我到底应该做些什么。提前谢谢。
答案 0 :(得分:7)
您可能没有从顶部view
到IBOutlet
的任何无效连接,但请检查File's Owner
和First 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}/*
答案 1 :(得分:2)
我尝试将连接添加到UITableViewCell
的笔尖时发现此问题
文件所有者已设置为自定义UITableViewCell
类。但不是那样,像往常一样:从视图直接拖入.h文件,你必须设置UITableViewCell
对象的类。然后,将东西连接到该对象;不是文件的所有者(即使它们是下面的同一个自定义类)。
答案 2 :(得分:0)
我解决了这个问题,但如果您遇到同样的问题,我建议先尝试上述任何一种方法,因为我很费时间。我将EditViewController.h / .m / .xib移动到我的桌面并创建了新的EditViewController.h / .m / .xib。然后我手工重建xib并将原始代码复制/粘贴到新的代码中。谢天谢地,我的xib并不太复杂。