#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. В этом случае вы все равно увидите подключение к розетке, но оно будет выделено серым цветом. Просто удалите его и сохраните свой кончик.