启动时出现XCode iPhone App错误

时间:2011-08-10 16:09:50

标签: iphone objective-c xcode ipad

这个错误究竟是什么意思,我该如何解决?

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'

这是我的app delegate中的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;
}

3 个答案:

答案 0 :(得分:1)

这意味着您的MainWindow.xib正在尝试将插座navigationController附加到应用代表。设置xib后,您必须已卸下插座。

答案 1 :(得分:1)

您的MainWindow.xib缺少navigationController的插座,即使它仍在连接。将IBOUtlet重新添加到AppDelegate.h,或断开插座与XIB的连接。

答案 2 :(得分: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;
}

现在这可行..