UIWebView wirft NSUnknownKeyException iPad
-
27-10-2019 - |
Frage
Ich habe eine Anwendung in der Registerkartenleiste.Alles funktioniert normal und ich kann problemlos zwischen Registerkarten und allem wechseln, außer wenn ich zu meinem zweiten Tab ProductViewClass
wechsle, wird die Ansicht nicht aktualisiert und die Konsolenausgabe unten wird ausgespuckt.Ich habe nichts in dieser Ansicht außer einem UIWebView und einem UILabel.Wenn ich die UIWebView lösche, wird sie erfolgreich ausgeführt, und wenn ich eine weitere hinzufüge, funktioniert sie weiterhin.Es funktioniert nur dann nicht mehr, wenn ich das IBOutlet vom Eigentümer meiner Datei mit der UIWebView verbinde.Neben der Synthese und Freigabe von productWebView
ist der einzige Nicht-Template-Code in ProductWebView.m
folgender:
NSString *urlString = @"http://www.google.com/";
NSURL *theURL = [NSURL URLWithString:urlString];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:theURL];
[productWebView loadRequest:urlRequest];
NSLog(@"Google loaded");
ProductWebView.h ist insgesamt wie folgt:
#import <UIKit/UIKit.h>
@interface ProductViewClass : UIViewController {
IBOutlet UIWebView *productWebView;
}
@property(nonatomic, retain) UIWebView *productWebView;
@end
Hier ist die Konsolenausgabe:
This GDB was configured as "x86_64-apple-darwin".Attaching to process 52523.
2011-01-30 19:18:28.907 FairCom[52523:40b] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIViewController 0x4d06eb0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key productWebView.'
*** Call stack at first throw:
(
0 CoreFoundation 0x00da8be9 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x00efd5c2 objc_exception_throw + 47
2 CoreFoundation 0x00da8b21 -[NSException raise] + 17
3 Foundation 0x000296cf _NSSetUsingKeyValueSetter + 135
4 Foundation 0x0002963d -[NSObject(NSKeyValueCoding) setValue:forKey:] + 285
5 UIKit 0x004a88d6 -[UIRuntimeOutletConnection connect] + 112
6 CoreFoundation 0x00d1f2cf -[NSArray makeObjectsPerformSelector:] + 239
7 UIKit 0x004a72ed -[UINib instantiateWithOwner:options:] + 1041
8 UIKit 0x004a9081 -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:] + 168
9 UIKit 0x00361a94 -[UIViewController _loadViewFromNibNamed:bundle:] + 70
10 UIKit 0x0035f709 -[UIViewController loadView] + 120
11 UIKit 0x0035f5e3 -[UIViewController view] + 56
12 UIKit 0x00372230 -[UITabBarController transitionFromViewController:toViewController:transition:shouldSetSelected:] + 120
13 UIKit 0x00370d86 -[UITabBarController transitionFromViewController:toViewController:] + 64
14 UIKit 0x00372b7e -[UITabBarController _setSelectedViewController:] + 263
15 UIKit 0x003729ed -[UITabBarController _tabBarItemClicked:] + 352
16 UIKit 0x002b1a6e -[UIApplication sendAction:to:from:forEvent:] + 119
17 UIKit 0x004af1f2 -[UITabBar _sendAction:withEvent:] + 422
18 UIKit 0x002b1a6e -[UIApplication sendAction:to:from:forEvent:] + 119
19 UIKit 0x003401b5 -[UIControl sendAction:to:forEvent:] + 67
20 UIKit 0x00342647 -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527
21 UIKit 0x0034016c -[UIControl sendActionsForControlEvents:] + 49
22 UIKit 0x002b1a6e -[UIApplication sendAction:to:from:forEvent:] + 119
23 UIKit 0x003401b5 -[UIControl sendAction:to:forEvent:] + 67
24 UIKit 0x00342647 -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527
25 UIKit 0x003411f4 -[UIControl touchesEnded:withEvent:] + 458
26 UIKit 0x002d60d1 -[UIWindow _sendTouchesForEvent:] + 567
27 UIKit 0x002b737a -[UIApplication sendEvent:] + 447
28 UIKit 0x002bc732 _UIApplicationHandleEvent + 7576
29 GraphicsServices 0x016dea36 PurpleEventCallback + 1550
30 CoreFoundation 0x00d8a064 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
31 CoreFoundation 0x00cea6f7 __CFRunLoopDoSource1 + 215
32 CoreFoundation 0x00ce7983 __CFRunLoopRun + 979
33 CoreFoundation 0x00ce7240 CFRunLoopRunSpecific + 208
34 CoreFoundation 0x00ce7161 CFRunLoopRunInMode + 97
35 GraphicsServices 0x016dd268 GSEventRunModal + 217
36 GraphicsServices 0x016dd32d GSEventRun + 115
37 UIKit 0x002c042e UIApplicationMain + 1160
38 FairCom 0x00001be0 main + 102
39 FairCom 0x00001b71 start + 53
40 ??? 0x00000001 0x0 + 1
)
terminate called after throwing an instance of 'NSException'
sharedlibrary apply-load-rules all
(gdb)
Danke für Ihre Hilfe!
Lösung
Sie laden eine Feder.In dieser Feder befindet sich eine Steckdose mit dem Namen productWebView
, die vermutlich mit einer Webansicht verbunden ist.Die Ausnahme, die Sie sehen, besteht darin, Ihnen mitzuteilen, dass der generische Codetagcode der Steckdose nicht vorhanden ist.Hier wird es komisch.Der Fehler besagt, dass der productWebView
des Objekts derjenige ist, der diesen fehlenden Ausgang hat.Das seltsame Bit ist, wo <UIViewController 0x4d06eb0>
anstelle des Namens einer tatsächlichen View Controller-Unterklasse steht.Es hört sich so an, als hätten Sie eine Schreibfeder, in der der Eigentümer der Datei als eine Ihrer View Controller-Unterklassen eingerichtet ist, aber zur Laufzeit verwenden Sie tatsächlich nur eine Instanz von UIViewController
direkt.Sie sollten überprüfen, ob alle Ansichts-Controller, die Registerkarten in Ihrem Registerkarten-Controller darstellen, tatsächlich korrekte Unterklassen von UIViewController
sind und nicht nur eine Instanz von UIViewController
selbst.