cocoa-touch - "this class is not key value coding-compliant for the key XXXX".

  显示原文与译文双语对照的内容

我正试图将 UILabel 链接到一个在我的类中创建的IBOutlet 。 每次构建应用程序时,都会在标签屏幕上崩溃,出现错误"此类不是键xxxx的键值 coding-compliant"。

下面是 SecondView.h 中的代码。


@interface SecondView : UIViewController {
 IBOutlet UILabel *string;
}

@property (nonatomic, retain) IBOutlet UILabel *string;

@end

下面是 SecondView.m ( 除了auto-generated代码之外,这里几乎没有什么我在这里粘贴的) 中的代码。


@implementation SecondView

@synthesize string;

在我的SecondView.xib

  • UILabel 与文件所有者链接。
  • 文件所有者的类别是 SecondView

所以这里有什么错误?

还有一件事:每次我创建一个新的应用程序并尝试将 UISomething 链接到 IBOutlet 时,我得到同样的错误。 是否有一个全局参数可以生成我遇到的错误?


音符编辑器: 现在这里的项目,它曾经是一个断掉的链接。

时间:

我下载了你的项目。

你正在获取的错误是


'NSUnknownKeyException', reason: '[<UIViewController 0x3927310> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key string.'

它被 Second 而引起的视图控制器在 MainWindow.xib 具有一类 UIViewController 代替 SecondView 。 更改为正确的类别解决了问题。

在顺便说一下,这是不正确的做法,以它的名称格式类似于 它邀请运行时命名冲突。 即使是一次性练习应用也避免它们。 命名冲突很难追踪,你不想浪费时间。

我有同样的问题,但TechZen的回答可能会令人惊讶,我发现很难应用到我的场景中。

最终我解决这种问题通过链接对象的标记通过的控制器列在 ( 在下面的图像中突出显示) ( 而恢复出原始机密文件所有者

希望这有帮助

enter image description here

这里错误指示一个已经连接的接口生成器对象被移除/重命名在它的所有者( 文件的所有者)的来源。

Control-click 上的文件所有者身份在interfacebuilder中如果你看到一个感叹号你需要来弥补这个不足。

在下面的图片中,你可以看到"aremovedview"右边有一个感叹号,这是因为我在IBOutlet中已经删除了视图对象。

enter image description here

这给出了以下错误: 'NSUnknownKeyException'终止软件是由于未捕获异常,原因是: 于关键相关 aRemovedView 。'',''[ setValue:forUndefinedKey:]: 此类不是键值 coding-compliant

试图实现一个表的自定义ViewCell时遇到了这个错误。 当我高亮显示了XIB的视图控制器并连接到CellView中的元素时,当我删除了这些元素之后,"此类不是键的键值 coding-compliant"会删除错误。

删除下面图像中的连接。 Delete the connections in inspector when File Owner is highlighted

请确保只有与表视图单元格的连接。 检查table表格视图cell单元格和检查器查找连接。

The connection should be in here when Table View Cell is highlighted

  1. 你只需要指定 IBOutlet 一次,你的不需要的IBOutlet 标签。
  2. 是否使用 UIViewController 来实例化笔尖? 在某些时候你应该打电话 [SecondView initWithNibName:@"yourNibName" bundle:nil];

我有完全相同的错误消息,感谢( ) 从 http://www.idev101.com的我能够解决这个挑战。 ! 我只在谷歌搜索和堆叠这些线索之后才发现她的网站。 我现在发布在这里装下一个要这样,StackOverFlow,具有相同的挑战我已经因为这个人很可能会来到这个帖子过谷歌。

我意识到,我犯了错误:


UIViewController *deviceViewController = [[UIViewController alloc] initWithNibName:@"DeviceViewController" bundle:nil];

而不是这样:


DeviceViewController *deviceViewController = [[DeviceViewController alloc] initWithNibName:@"DeviceViewController" bundle:nil];

火警的警铃在哪里?

 
DeviceViewController

 

我的类名称也称为


DeviceViewController.h 
DeviceViewController.m

你必须得


"import DeviceViewController.h"

在你的实现(. m 文件) 中,你想要调用 比如 另一个 UIViewController 。

我是完全不只对不起如果我是明显的说明对于初学者和我一样,可能会获得向下的投票在现在很不涉及到这些问题,但我一直在找你,4 () 小时直。现在来看看这些错误消息的答案? ! 如果我可以将这一点留给 1或者 2个人,那就太好了:

对于那些对代码如何继续加载其他UIViewController感兴趣的人:


 [self presentViewController:deviceViewController animated:YES completion:nil];

...