Xcode这个类不符合键值编码(key value coding)规范,无法对"view"进行编码。

3

我已经广泛地搜索了这个问题,但是没有找到答案。

问题是“此类不符合关键值编码标准,无法为键视图进行编码”。

我尽可能地删除了代码,但是这个错误仍然不断弹出,让我疯狂!

我有以下的 someSelector.h 文件:

#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>

@interface someSelector : UIViewController {
    UIView *view;
}

@property (nonatomic, retain) IBOutlet UIView *view;

@end

这是someSelector.m文件的相关部分

#import "someSelector.h"

@synthesize view;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
}

我得到的错误信息如下:

2012-08-30 12:42:51.714 SomeApp[2280:f803] *** Terminating app due to uncaught exception    'NSUnknownKeyException', reason: '[<UIApplication 0x6821350> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key view.'

我想我已经尝试了所有可能的方法。插座似乎是正确的,我已经试过重新连接它们无数次。我还将文件拥有者的类名命名为someSelector,所以这也看起来没问题...

请帮帮我,我现在真的没有任何想法了...


你为什么要将view声明为一个属性?我很惊讶这没有引发构建警告 - UIViewController已经有一个叫做view的属性。 - Abizern
这是尝试了所有可能后的结果。我对此非常陌生... 我已经删除了视图属性,但错误仍然不断弹出。 - Rolfie
那是从 someSelector.m 文件中真实的复制/粘贴代码吗?如果是,我看不到其中的 @implementation someSelector 行。 - 0xDE4E15B
这不是直接复制。我已经实现了someSelector。抱歉。 - Rolfie
UIApplication 对于键“view”不符合 KVC 规范。您的类是符合规范的,但您(可能是间接地)试图在 UIApplication 上设置“view”的值。请为 ObjC 异常添加异常断点,并发布您在命中断点时看到的堆栈跟踪。 - Nate Chandler
3个回答

11

我遇到了同样的问题,对我来说解决方案是进入目标 -> 常规 -> 主界面,然后删除其中的条目。将其完全留空即可。这对我有用(尽管我在这里使用的是PhoneGap)。


2
这对我来说是解决方案。 - Anthony
哇塞,我找了好长时间也没找到。只是一个简单的修复,突然间又可以正常运行了。非常感谢您,先生。 - flyingace
只有在我打开我的PhoneGap项目中的.xib文件后,它才对我起作用。 - jwinn

1
请注意,它试图在 UIApplication 类中查找一个 view。最有可能的原因是您有一个 .xib 文件,文件所有者设置为 UIApplication 而不是 UIViewController 子类...或者您有一个文件所有者,它是合法的应用程序类,但您已将视图输出连接到它。
打开项目中的任何 .xib 文件,选择文件所有者,并在身份检查器中验证其类名。
有时候通过打开 .xib 文件作为源代码并搜索 "view" 更容易找到这些问题。

错误提示显示了一个 UIApplication,但是我已经将文件的所有者类设置为 someSelector。而这个类是一个 UIViewController。真的很奇怪... 在 xib 文件的源代码中(在 IBClassDescriber 中),它说 <string key="className">someSelector</string> <string key="superclassName">UIViewController</string>。 - Rolfie
2
这是你项目中唯一的.xib吗?如果你在目标设置中将“主界面”字段设置为一个没有将UIApplication作为文件所有者的.xib,则会发生错误附加到UIApplication的错误情况。 - Phillip Mills

0

一些选择器类xib文件存在问题,请检查是否显示任何警告,同时Abizem是正确的,您不需要将视图声明为属性。


xib文件没有警告,因此没有错误的输出或其他问题。有没有更好的方法来检查你的xib文件是否正确? - Rolfie

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