此类不是符合编码要求的关键值

时间:2010-06-23 07:55:32

标签: objective-c iphone

我创建了一个三个文件SettingsViewController.h,SettingsViewController.m和SettingsViewController.xib。

我在单击一行中的单元格时显示SwttingsViewController.xib。 xib文件上有一个标签和滑块。它工作正常。但在使用界面构建器创建连接后。即从redLabel插槽拖放到xib文件上的Label我收到此错误并终止应用程序。

'[<UIViewController 0x3d636d0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key redLabel.

6 个答案:

答案 0 :(得分:6)

我有一个类似的问题接受我的问题是界面构建器没有整理我删除的项目。所以它留在了源代码中。

通过进入xib文件解决了这个问题。右键单击该文件,选择“打开为”,然后选择“SourceCode”。 我收到的错误信息是: 对于关键的originalField

,此类不符合键值编码

我的错误消息,你可以看到给我一个有问题的项目“originalField”的名称,在这种情况下,它是一个我删除的文本字段,但界面构建器没有正确清理。

我进入了源代码并搜索了originalField并删除了对它的引用,都修复了。

答案 1 :(得分:3)

看起来SwttingsViewController.xib的文件所有者有错误的类。进入Interface Builder并将文件所有者的类更改为SettingsViewController。有关文件所有者和UIViewController的详细信息,请参阅this page

答案 2 :(得分:0)

谢谢哈罗德! 你的回答让我解决了我的问题! 我删除了一个NSString变量,该nib没有正确清理。 对我来说最快捷的方法是删除笔尖并制作另一个解决它的笔尖。 谢谢, 暖气。

答案 3 :(得分:0)

发生此错误的原因通常是在源代码中重命名属性或方法,而不是将控件与旧值断开连接并将控件重新连接到新命名的值。

由于我们知道此错误消息通常意味着您在xib或storyboard中有一个控件,该控件连接到源中不存在的属性或操作。并记住每个@property创建一个 setPropertyName setter方法和一个 propertyName getter。您可以在连接检查器中检查xib中的每个控件仍然连接到有效的IBOutlet或IBAction。

要避免此问题,请使用refactor-&gt;重命名菜单选项,Xcode将确保更新两个条目。

答案 4 :(得分:0)

当我为一个UIView子类的对象创建一个.xib时,我遇到了同样的问题。

问题是:在创建约束时,会出现一个&#34;对象&#34;下拉,其中包含2个值:&#34;文件所有者&#34;和我的对象名称:&#34; Popover View&#34;。

选择&#34;文件所有者&#34;如果我添加了单个插座,则会失败。但是,当使用我的类名重新添加所有出口时:&#34; PopoverView&#34;然后它将从Nib创建,没有&#34;键值编码兼容错误&#34;。

查看截图。 enter image description here

我仔细检查了我的文件所有者是否已正确设置,方法是点击笔尖中的顶级视图:&#34; PopoverView&#34;并选择&#34; Custom Class&#34;选项卡,并确保它设置为&#34; PopoverView&#34;那里。看截图: enter image description here

所以唯一对我有帮助的是:确保我的&#34; Popover View&#34;类名被选中在&#34;对象&#34;字段,在创建约束时,而不是文件的所有者。

答案 5 :(得分:0)

我遇到了这个问题,但要解决此问题,我必须将module字段下的viewcontroller的class字段更改为无,因为它填充了我的项目模块,但这是不正确的。