2011-08-10 27 views
0

這個錯誤意味着什麼,我該如何解決?XCode iPhone App啓動時出錯

2011-08-10 12:06:54.116 ScanTest[973:707] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<ScanTestAppDelegate 0x190970> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key navigationController.' 
*** Call stack at first throw: 
(
    0 CoreFoundation      0x36d0d64f __exceptionPreprocess + 114 
    1 libobjc.A.dylib      0x33f66c5d objc_exception_throw + 24 
    2 CoreFoundation      0x36d0d3cd -[NSException dealloc] + 0 
    3 Foundation       0x3511eedb -[NSObject(NSKeyValueCoding) setValue:forUndefinedKey:] + 182 
    4 Foundation       0x350d79cb _NSSetUsingKeyValueSetter + 90 
    5 Foundation       0x350d7217 -[NSObject(NSKeyValueCoding) setValue:forKey:] + 194 
    6 Foundation       0x350b942f -[NSObject(NSKeyValueCoding) setValue:forKeyPath:] + 130 
    7 UIKit        0x35cfd8df -[UIRuntimeOutletConnection connect] + 66 
    8 CoreFoundation      0x36ca5d7b -[NSObject(NSObject) performSelector:] + 18 
    9 CoreFoundation      0x36ca599d -[NSArray makeObjectsPerformSelector:] + 388 
    10 UIKit        0x35cfc847 -[UINib instantiateWithOwner:options:] + 586 
    11 UIKit        0x35cfde09 -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:] + 92 
    12 UIKit        0x35b284cd -[UIApplication _loadMainNibFile] + 96 
    13 UIKit        0x35b22b09 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 180 
    14 UIKit        0x35af77d7 -[UIApplication handleEvent:withNewEvent:] + 1114 
    15 UIKit        0x35af7215 -[UIApplication sendEvent:] + 44 
    16 UIKit        0x35af6c53 _UIApplicationHandleEvent + 5090 
    17 GraphicsServices     0x36431e77 PurpleEventCallback + 666 
    18 CoreFoundation      0x36ce4a97 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 26 
    19 CoreFoundation      0x36ce683f __CFRunLoopDoSource1 + 166 
    20 CoreFoundation      0x36ce760d __CFRunLoopRun + 520 
    21 CoreFoundation      0x36c77ec3 CFRunLoopRunSpecific + 230 
    22 CoreFoundation      0x36c77dcb CFRunLoopRunInMode + 58 
    23 UIKit        0x35b21d49 -[UIApplication _run] + 372 
    24 UIKit        0x35b1f807 UIApplicationMain + 670 
    25 ScanTest       0x000037fb main + 70 
    26 ScanTest       0x00002e44 start + 40 
) 
terminate called after throwing an instance of 'NSException' 

這裏是我的應用程序委託我didFinishLaunching方法:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
    // Override point for customization after app launch  
    UINavigationController *navigationController = [[UINavigationController alloc] init]; 
    [window addSubview:navigationController.view]; 

    MainViewController *viewController = [[MainViewController alloc] init]; 
    [navigationController pushViewController:viewController animated:NO]; 
    [viewController release]; 

    // Override point for customization after application launch 
    [window makeKeyAndVisible]; 
    return YES; 
} 
+0

你能告訴我們你的'應用程序的執行情況:在您的應用程序代理didFinishLaunchingWithOptions'? – EmilioPelaez

回答

1

您的MainWindow.xib缺少navigationController的插座,即使它仍在連接。重新將IBOUtlet添加到您的AppDelegate.h,或從XIB斷開連接。

+0

你是怎麼做的?我從來沒有使用XIB,我也不想在這個項目中使用任何XIB。 – CodeGuy

+0

你是從哪個模板創建的?所有模板至少包含一個MainWindow.XIB,如果刪除了它,那肯定會導致問題。你將不得不恢復文件,刪除插座,然後你可以再次刪除。有什麼特別的原因讓你厭惡XIB?它們不會傷害任何東西,並且使UI設計更容易。 – FeifanZ

+0

所以你想通了?這個問題是什麼? – FeifanZ

1

這意味着你的MainWindow.xib試圖出口navigationController附加到應用程序委託。設置xib後,您必須拆除插座。

+0

那麼我該如何解決這個問題? – CodeGuy

0

你的代碼寫類似這樣的

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
    // Override point for customization after app launch  

    MainViewController *viewController = [[MainViewController alloc] init]; 

    UINavigationController *navigationController = [[UINavigationController alloc] init]; 

    [navigationController pushViewController:viewController animated:NO]; 
    [viewController release]; 

    [window addSubview:navigationController.view]; 


    // Override point for customization after application launch 
    [window makeKeyAndVisible]; 
    return YES; 
} 

現在這個工程..

+0

現在它仍然不起作用。 – CodeGuy