对于密钥XXXXXX,此类不符合密钥值编码

时间:2011-05-08 21:25:25

标签: ios uiviewcontroller interface-builder

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

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 这里有两个主屏幕截图,主界面和loadingView中的loadingView: enter image description here

enter image description here

4 个答案:

答案 0 :(得分:28)

无法确定您的情况是否正在发生这种情况,但如果您在笔尖中设置了连接以将对象分配给另一个对象的属性,则通常会看到此消息,但属性为在目标对象上丢失。

所以你可能在一个点上有一个名为aproposViewController的IBOutlet,在一个点上连接了另一个视图控制器,然后删除了IBOutlet但忽略了删除笔尖中的连接。

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

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

答案 1 :(得分:4)

我有这个问题,因为我有一个:

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

答案 2 :(得分:4)

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

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

答案 3 :(得分:2)

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

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

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