2016-10-14 4 views
0

: Ich bin in swift .. jemand mir helfen, zu verstehen, warum dieser Fehler werfenConstant ‚XXX‘ verwendet, bevor initialisiert wird

Constant ‚parsedResult‘ haben vor

auf der anderen Seite initialisiert Hand, wenn ich return in der catch dann kompilieren Fehler gegangen. Was ist die Beziehung zueinander. erkläre bitte .

Hier ist mein Code:

if let data = data { 
    let parsedResult : AnyObject! 
      do { 
       parsedResult = try NSJSONSerialization.JSONObjectWithData(data, options: .AllowFragments) 
              } 
      catch{ 
       print("something worng ") 
       // return 

      } 
      // error compiler error this line 
        print(parsedResult) 
     } 
+0

kommentieren bitte. warum unten gewählt –

Antwort

0

Die Art und Weise Sie Ihren Code zur Zeit haben, parsedResult könnte nicht initialisiert werden, wenn Sie die print(parsedResult) Anweisung erreichen. Dies kann der Fall sein, wenn die try Anweisung einen Fehler auslöst. parsedResult würde immer noch nicht initialisiert sein, das Programm würde mit dem catch Block fortfahren, "etwas Falsches" drucken und dann einfach fortfahren (Versuch, parsedResult zu drucken).

Wenn Sie jedoch einen return in Ihren catch Block einfügen, wird sichergestellt, dass Sie im Falle eines Fehlers nicht zur print(parsedResult) Zeile weitergehen.

1

Dies kann leicht durch Deklaration von parseResult als AnyObject? was bedeutet, dass es auf Null initialisiert wird. Der Ausdruck druckt einen optionalen Wert, den er gut verarbeiten kann.

Seien Sie vorsichtig mit den Wörtern, die Sie verwenden. "// Fehler, der diese Zeile wirft" ist völlig irreführend. In dieser Zeile wird kein Fehler ausgegeben. Fehler werden zur Laufzeit ausgelöst. Der Compiler meldet einen Fehler in dieser Zeile. Sei genau.

+0

o sicher, dass es korrekt ist, ist Compilerfehler –

Verwandte Themen