这个类不符合键值编码的要求,针对键“XXXXXX”。

10

当我尝试构建和运行我的应用程序时,它崩溃了,并且在日志中我得到了以下信息:

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

主视图中,即使在IB中也没有关于 aproposViwController 的声明!! 编辑 2 这里有我在界面构建器中为主界面和 loadingView 做的两个基本设置截图: enter image description here

enter image description here


您可以打开 aproposViewController.xib 文件并检查窗口右下角是否有任何警告。如果没有,请检查检查器(信息选项卡)。 - Robin
4个回答

28

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

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

因此,当加载nib时,它尝试设置该属性,只发现它不存在,因此出现以下错误:

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

嗨,谢谢你的回答,实际上LoadingViewController是我的应用程序启动后显示的第一个视图,我已经编辑了我的问题,请看一下 :) - Luca
请检查您的MainWindow.xib和LoadingViewController.xib中的所有连接和对象类型。我认为你会发现一个不应该在那里的东西。不幸的是,从远处解决nibs问题非常困难,但如果没有代码尝试设置aproposViewController,那么可以肯定地说nib是问题所在。 - kball
再次您好,我已经编辑了我的问题。这两张截图展示了IB中的连接情况。我快要疯了,以前我总是能够轻松地完成这些工作,但这次我不知道为什么无法实现!!! - Luca

4
如果您从XIB中删除了IBOutlet连接,但仍然出现问题,则需要从模拟器中删除应用程序并重新运行。

4
我遇到了这个问题,原因是我有一个:
vc = [[someVC alloc] initWithNibName:@"oldNibFileNameButCachedSomewhereWithOldRefToPropertyIn" bundle:nil];

2

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

实际上,我为一个按钮提供了两个操作事件。我删除了额外分配给按钮的连接后,问题就解决了。

这对我的情况起作用。我希望对其他人有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接