Просмотр и неизвестное исключение

#iphone #objective-c #ios4 #iphone-sdk-3.0 #interface-builder

#iPhone #objective-c #ios4 #iphone-sdk-3.0 #конструктор интерфейса

Вопрос:

У меня возникает странное исключение, когда я захожу, чтобы подключить кнопку в Interface Builder. Есть идеи о том, что происходит.

 2011-04-11 14:14:06.251 LittleTipperPro[1419:707] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIViewController 0x19b400> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key numberOne.'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x3697464f __exceptionPreprocess   114
    1   libobjc.A.dylib                     0x3101bc5d objc_exception_throw   24
    2   CoreFoundation                      0x369743cd -[NSException dealloc]   0
    3   Foundation                          0x35323edb -[NSObject(NSKeyValueCoding) setValue:forUndefinedKey:]   182
    4   Foundation                          0x352dc9cb _NSSetUsingKeyValueSetter   90
    5   Foundation                          0x352dc217 -[NSObject(NSKeyValueCoding) setValue:forKey:]   194
    6   Foundation                          0x352be42f -[NSObject(NSKeyValueCoding) setValue:forKeyPath:]   130
    7   UIKit                               0x367218df -[UIRuntimeOutletConnection connect]   66
    8   CoreFoundation                      0x3690cd7b -[NSObject(NSObject) performSelector:]   18
    9   CoreFoundation                      0x3690c99d -[NSArray makeObjectsPerformSelector:]   388
    10  UIKit                               0x36720847 -[UINib instantiateWithOwner:options:]   586
    11  UIKit                               0x36721e09 -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:]   92
    12  UIKit                               0x3669b5e9 -[UIViewController _loadViewFromNibNamed:bundle:]   36
    13  UIKit                               0x36668fa5 -[UIViewController loadView]   80
    14  UIKit                               0x3654debf -[UIViewController view]   30
    15  UIKit                               0x3654c2b5 -[UIWindow addRootViewControllerViewIfPossible]   32
    16  UIKit                               0x3667753f -[UIWindow setRootViewController:]   166
    17  LittleTipperPro                     0x0000226f -[switchViewsAppDelegate application:didFinishLaunchingWithOptions:]   178
    18  UIKit                               0x3654c821 -[UIApplication _callInitializationDelegatesForURL:payload:suspended:]   772
    19  UIKit                               0x36546b65 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:]   272
    20  UIKit                               0x3651b7d7 -[UIApplication handleEvent:withNewEvent:]   1114
    21  UIKit                               0x3651b215 -[UIApplication sendEvent:]   44
    22  UIKit                               0x3651ac53 _UIApplicationHandleEvent   5090
    23  GraphicsServices                    0x362fee77 PurpleEventCallback   666
    24  CoreFoundation                      0x3694ba97 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__   26
    25  CoreFoundation                      0x3694d83f __CFRunLoopDoSource1   166
    26  CoreFoundation                      0x3694e60d __CFRunLoopRun   520
    27  CoreFoundation                      0x368deec3 CFRunLoopRunSpecific   230
    28  CoreFoundation                      0x368dedcb CFRunLoopRunInMode   58
    29  UIKit                               0x36545d49 -[UIApplication _run]   372
    30  UIKit                               0x36543807 UIApplicationMain   670
    31  LittleTipperPro                     0x0000217b main   82
    32  LittleTipperPro                     0x00002124 start   40
)
terminate called after throwing an instance of 'NSException'
warning: Unable to read symbols for /Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.3.1 (8G4)/Symbols/Developer/usr/lib/libXcodeDebuggerSupport.dylib (file not found).
(gdb) 
  

Вот делегат приложения.m:

 #import "switchViewsAppDelegate.h"

@implementation switchViewsAppDelegate


@synthesize window=_window;
@synthesize viewController;


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    //IF USER WANTS THIS ONE, THEN LOAD
    viewController = [[UIViewController alloc] initWithNibName:@"viewTwo" bundle:nil];

    //[self.window addSubview:viewController.view];
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];

    return YES;
}

@end
  

Вот делегат.h:

 #import <UIKit/UIKit.h>

@interface switchViewsAppDelegate : NSObject <UIApplicationDelegate> {

    UIViewController *viewController;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UIViewController *viewController;

@end
  

Любая помощь или предложения, действительно ценятся!

  • Примечание: У меня есть представление под названием viewTwo с кончиком, и у меня нет кончика для контроллера представления, а затем у меня есть mainWindowNib.

Комментарии:

1. Держу пари, что это ошибка с вашим наконечником….

2. Я проверил все внутри кончика, на что я должен смотреть?

3. Что-то с именем «numberOne».. в нем говорится, что он пытается установить свойство «numberOne», которого не существует для обычного UIViewController

4. У меня есть два выступа view, но у меня нет выступа для контроллера view, не так ли?

5. Я не знаю. Странный вопрос: использует ли файл viewTwo.nib пользовательский вид? Если это так, вам нужно изменить [UIViewController alloc] на [TheNameOfMyCustomView alloc]

Ответ №1:

Вы выделяете UIViewController непосредственно как viewTwo. Если у viewTwo nib настроены какие-либо выходы, отличные от view, что, я уверен, так и есть, тогда вы получите сбой. Измените свой код, чтобы он соответствовал вашему файлу реализации для nib.

Пример.

 #import "viewTwo.h"

...

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    //IF USER WANTS THIS ONE, THEN LOAD
    viewController = [[viewTwo alloc] initWithNibName:@"viewTwo" bundle:nil];
  

Комментарии:

1. Большое спасибо, именно в этом и заключалась проблема.

Ответ №2:

Я получал эту ошибку, потому что я начал связывать TextView, а затем остановился, щелкните представление, с которым у вас возникают проблемы, и посмотрите на все выходы и действия на правой панели инструментов. Я нашел одно в моем с x на нем. после удаления соединения все в порядке.

Ответ №3:

Загляните в свои файлы NIB и проверьте выходные соединения каждого объекта на наличие того, которое указывает на numberOne. Соединение может все еще присутствовать в вашем nib, даже если объект «numberOne» был удален из Interface Builder. В этом случае вы все равно увидите подключение к розетке, но оно будет выделено серым цветом. Просто удалите его и сохраните свой кончик.