2016-07-21 8 views
2

Ich habe ein Array wie so Zugabe Artikel:Swift - gefunden unerwartet null, während ein optionaler Wert auspacken, wenn sie Array

var gestureArray: Array<UIGestureRecognizer>! 

und ich versuche hinzufügen Artikel zu diesem Array wie folgt:

for gesture in webview.scrollView.gestureRecognizers! 
     { 
      gestureArray.insert(gesture, atIndex: 0) 
     } 

     print(gestureArray) 

aber ich habe diesen Fehler nach dem ersten Element hinzuzufügen versuchen:

unexpectedly found nil while unwrapping an Optional value 

Wenn ich jede Geste drucken sie wie t aussehen His:

<UIScrollViewDelayedTouchesBeganGestureRecognizer: 0x124eabb60; state = Possible; delaysTouchesBegan = YES; view = <_UIWebViewScrollView 0x125825400>; target= <(action=delayed:, target=<_UIWebViewScrollView 0x125825400>)>> 

<UIScrollViewPanGestureRecognizer: 0x124eac370; state = Possible; delaysTouchesEnded = NO; view = <_UIWebViewScrollView 0x125825400>; target= <(action=handlePan:, target=<_UIWebViewScrollView 0x125825400>)>> 

<UIScrollViewPinchGestureRecognizer: 0x124d892a0; state = Possible; delaysTouchesEnded = NO; view = <_UIWebViewScrollView 0x125825400>; target= <(action=handlePinch:, target=<_UIWebViewScrollView 0x125825400>)>> 

Antwort

3

Dies bedeutet, daß die Anordnung nicht auf einen nicht-Null-Wert initialisiert.

Wenn Sie Ausrufezeichen ! nach einer Art setzen, erklären Sie Swift zwei Dinge:

  • Es ist völlig legal für den Wert von gestureArraynil zu sein, und
  • Sie werden einen nicht zuweisen -nil Wert zu gestureArray vor dem Zugriff darauf.

Im Gegenzug Swift können Sie gestureArray zugreifen, als ob es nicht optional waren (dh mit gestureArray.insert(...) statt gestureArray!.insert(...))

Von der Ausnahme, dass Sie bekommen, scheint es, dass gestureArray noch nil ist, wenn Sie insert rufen es.

+0

Können Sie mir ein Beispiel geben, was ich tun soll? – user979331

+0

@ user979331 Abhängig von Ihren Anforderungen können Sie 'non-optional ', also' var gestenArray = [UIGestureRecognizer]()' machen oder eine Zeile hinzufügen, um es zu initialisieren, wenn Sie es optional lassen möchten. – dasblinkenlight

2

Ihr gestureArray Wert ist Null. Sie können die Variable auf diese Weise erstellen:

var gestureArray = [UIGestureRecognizer]()

Sie haben eine Variable erstellen und seine Art Einstellung, aber sein Wert wurde nie zugewiesen. Und es gibt einen weiteren Fehler, und Sie können keine Klasseneigenschaft erstellen und als unwrapped optional festlegen. Sie sollten immer oder eine Variable erstellen und ihr einen Wert zuweisen oder ihren Typ als optional festlegen. Bsp .: var gestureArray: [UIGestureRecognizer]?

Verwandte Themen