此类与键 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 的键值编码不兼容的主要内容,如果未能解决你的问题,请参考以下文章