2016-11-12 2 views
-1

Ich habe eine Struktur namens AwardData mit 3 Felder, eine title : String, eine description : String und completed : Bool. Ich versuche, eine Instanz eines dieser dann setzen Sie seine Daten wie folgt zu erstellen:Struktur gefunden Null beim Auspacken

var data : AwardData! 

     switch awardNum 
     { 
     case 0: 
      data.title = "Roomie" 

jedoch in einen Fehler Ich bin mit: unexpectedly found nil while unwrapping an Optional value.

Wie mache ich die Instanz der Struktur inkorrekt?

+2

Sie keine Instanz überhaupt machen, sind Sie nur erklären 'data' als implizit unwrapped optional, das ist "nil". – vadian

+0

Implizit ausgepackte Optionals schlagen erneut zu. Ich frage mich, warum jeder vorschlägt, sie zu vermeiden./s – Alexander

Antwort

1

var data: AwardData! deklariert eine implizit unverpackte Optional Variable. Es ist fast so, als hätten Sie var data: AwardData? geschrieben. Die ! am Ende macht es implizit unwrapped, was im Grunde nur bedeutet, dass der Compiler nicht darüber klagen wird, dass Sie ihn wie eine normale (nicht-optionale) Variable verwenden.

Das eigentliche Problem ist, dass Sie Ihre data Variable noch nicht initialisiert haben. Sie haben nur seinen Typ deklariert, aber nicht die tatsächliche Struktur erstellt. Es ist null, aber Sie versuchen, seinem title einen Wert zuzuweisen.

Sie können dies stattdessen tun:

var data = AwardData() 

und dann den Titel ohne Probleme:

data.title = "Roomie" 
Verwandte Themen