Swift: Etikettentext - "Schwerwiegender Fehler: unerwartet wurde beim Entpacken ein optionaler Wert Null gefunden"

8

Wie es im Titel heißt, versuche ich den Etikettentext mit einem Klick zu ändern. Der Fehler wird in der Zeile self.playerChoice.text = "You: Rock"

angezeigt %Vor%     
artie711 24.11.2014, 20:34
quelle

5 Antworten

0

Ich habe diesen Code ausprobiert und es funktioniert gut für mich:

%Vor%     
Dharmesh Kheni 25.11.2014, 05:35
quelle
18

Ich stieß auf dieses Problem und es stellte sich heraus, dass die Etiketten, die ich bearbeiten wollte, zu dem Zeitpunkt, als der Code lief, nicht existierten.

Es stellte sich heraus, dass ich denselben View-Controller aus einer übergeordneten Ansicht und einer untergeordneten Containeransicht referenzierte. Die Etiketten, die ich ändern wollte, waren nur in der Containeransicht, aber als beide Ansichten geladen wurden, lief der View-Controller für beide, also versuchte er die Etiketten zu finden, die in der Elternansicht nicht existierten und warf den obigen Fehler auf.

>

Also die Lektion, die ich gelernt habe ... Wenn eine Referenz auf ein View-Objekt eine NIL wirft ..

  • Die Ansicht ist dem View-Controller nicht richtig zugeordnet.
  • Das Objekt in der Ansicht ist nicht dem referenzierenden IBOutlet zugeordnet.
  • Oder wie in meinem Fall gibt es mehrere Ansichten, die mit demselben View Controller verbunden sind und Referenzen auf Objekte in einer Ansicht werden nicht in der anderen gefunden.
quelle
3

Sieht so aus, als wäre die Spielerwahl nicht initialisiert.

%Vor%

Vielleicht ist die Verbindung zwischen der Steckdose und dem InterfaceBuilder / Storyboard verloren gegangen. Versuchen Sie es erneut zu verbinden.

Ich habe eine kleine Demo erstellt und alles funktioniert gut:

Überprüfen Sie, ob die Kreise auf der linken Seite Ihres IBOutlet gefüllt sind. Andernfalls ist die Verbindung verloren.

    
Stefan 24.11.2014 20:51
quelle
2

Ich habe das gleiche Problem in Xcode 6.2 kennengelernt. Ich benutze einzelne XIBs anstelle von Storyboards. Das Problem für mich war, dass Xcode das XIB bei Swift nicht automatisch mit dem View-Controller verbindet, wenn die Namen identisch sind. Daher zeigen die IBOutlets für die Labels auf Null und geben das Fatale an.

Sie können die viewcontroller.xib so ändern, dass sie modulename.viewcontroller.xib heißt, damit xcode sie dem View-Controller zuordnen kann und das Problem verschwindet.

Weitere Optionen werden in diesem Thread erwähnt:

Kann die UIViewController XIB-Datei im Storyboard in Swift nicht laden

    
peaxol 06.05.2015 08:40
quelle
2

Was das für mich repariert hat (und es bringt mich jedes Mal, besonders wenn Sie neu mit Storyboards arbeiten) ist sicherzustellen, dass Sie Ihren View-Controller wie folgt initialisieren:

%Vor%

anstelle des Stand-alone-xib-Wegs:

%Vor%

Sonst werden all Ihre Verkaufsstellen gleich null sein und viele Kopfschmerzen werden bald folgen.

    
shokaveli 03.06.2016 15:50
quelle

Tags und Links