此类与键 XXXXXX 的键值编码不兼容

Posted

技术标签:

【中文标题】此类与键 XXXXXX 的键值编码不兼容【英文标题】:this class is not key value coding-compliant for the key XXXXXX 【发布时间】:2011-05-08 21:25:25 【问题描述】:

当我尝试构建和运行我的应用程序时,它崩溃了,我在日志中得到了这个:

reason: '[<LoadingViewController 0x6b2c5a0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key aproposViewController.'

奇怪的是aproposViewController 没有在LoadingViewController 中使用,它只是我应用程序中的另一个视图控制器。请帮忙,谢谢提前:)

编辑

appdelegate.h:

@class LoadingViewController;

@interface TopStationAppDelegate : NSObject <UIApplicationDelegate,CLLocationManagerDelegate> 
    UIWindow *window;
    LoadingViewController *loadingView;

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet LoadingViewController *loadingView;
@end

appdelegate.m

#import "LoadingViewController.h"
@implementation TopStationAppDelegate
@synthesize window;
@synthesize loadingView;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions     
  [window addSubview:loadingView.view];
    [window makeKeyAndVisible];
    return YES;

- (void)dealloc 
    [loadingView release];
    [window release];
    [super dealloc];

@end

没有 aproposViwController 的声明,即使在主视图的 IB 中! 编辑 2 这是我在 main 中设置的 besic 和 interface builder 中的 loadingView 的两个屏幕截图:

【问题讨论】:

你可以打开aproposViewController.xib文件,查看窗口右下角是否有警告。如果不是检查检查员,(信息选项卡。) 【参考方案1】:

不能确定这是否是您的情况,但如果您在 nib 中设置了一个连接以将一个对象分配给另一个对象的属性,那么您通常会看到此消息,但该属性是在目标对象上丢失。

因此,您可能曾经在 LoadingViewController 上有一个名为 aproposViewController 的 IBOutlet,在 nib 中将另一个视图控制器连接到它,然后删除了 IBOutlet 但忽略了删除 nib 中的连接。

所以当nib被加载时,它会尝试设置属性,结果发现它不存在,因此:

reason: '[<LoadingViewController 0x6b2c5a0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key aproposViewController.'

【讨论】:

嗨,谢谢你的回答,实际上LoadingViewController 是我的应用程序启动后显示的第一个视图,我已经编辑了我的问题,请看一下 :) 检查 MainWindow.xib 和 LoadingViewController.xib 中的所有连接和对象类型。我想你会找到一个不应该在那里的。不幸的是,很难从远处排除 nib 的故障,但如果没有代码尝试设置 aproposViewController,那么可以肯定的是 nib 是问题所在。 嗨,我已经编辑了我的问题,这两个屏幕截图显示了 IB 中的连接,我要疯了,我以前很容易做这些事情,我不知道为什么它不'这次执行!!!【参考方案2】:

我遇到了这个问题,这是因为我有一个:

vc = [[someVC alloc] initWithNibName:@"oldNibFileNameButCachedSomewhereWithOldRefToPropertyIn" bundle:nil];

【讨论】:

【参考方案3】:

如果您从 XIB 中删除了与 IBOutlet 的连接,但它仍然会发生

然后从模拟器中删除应用程序并再次运行。

【讨论】:

【参考方案4】:

我在我的应用程序中发现了同样的错误,一段时间后我找到了解决方案。

实际上我已经为一个按钮提供了 2 个动作事件。 问题结束后,我删除了分配给按钮的额外连接。

这在我的场景中有效。我希望它对其他人有所帮助..

【讨论】:

以上是关于此类与键 XXXXXX 的键值编码不兼容的主要内容,如果未能解决你的问题,请参考以下文章

此类与键 scrollView 的键值编码不兼容

情节提要:此类与键的键值编码不兼容

MPMediaItem 此类与键的键值编码不兼容

此类与键错误的键值编码不兼容

此类与键 setDefaultLabelText 的键值编码不兼容。 [复制]

此类与键 XXX 的键值编码不兼容 - 类正确连接?