2017-05-21 2 views
-1

In meinem AppDelegate in ApplicationWillTerminate ich eine Variable erstellt:In ApplicationWillTerminate Viewcontroller ist gleich Null

let firstVC = FirstViewController() 
print(firstVC.lbl.text) 

Nachdem ich die App beenden, die App stürzt ab, weil „fatale Fehler: unerwartet null gefunden, während einen optionalen Wert auspackt“. Nachdem ich etwas überprüft habe, ist der Viewcontroller anscheinend null.

Weiß jemand, wie man das repariert?

Vielen Dank

+1

Was ist FirstViewController und warum erstellen Sie es in ApplicationWillTerminate? –

+0

Was Gagan_iOS gesagt hat und ich bezweifle, dass 'FirstViewController' null ist. Stattdessen denke ich, dass "lbl" eine Steckdose ist, die nicht verbunden ist, wenn Sie "FirstViewController" nicht von einem Storyboard instanzieren oder nicht von einer NIB laden. – thm

+0

Ich versuche, lbl.text als UserDefault in der ApplicationWillTerminate zu speichern und keine Steckdose angeschlossen ist. –

Antwort

0

Wie ich in meinem Kommentar sagte, kann ich mir nicht vorstellen, dass firstVC null ist, weil der einzige Weg, es wäre sein könnte, wenn seine init failable war, das, weil Sie nicht unmöglich ist, außer Kraft setzen können UIViewController.init() mit einem fehlbaren und selbst dann würde der Compiler beschweren, dass Sie print(firstVC?.lbl.text) sagen müssten. Das veranschaulicht die Schönheit von Swifts optionalen Typen.

Zur Verifizierung: print(firstVC.lbl) sollte Null drucken. Die Logik, die die Ausgänge verbindet, wird nur ausgeführt, wenn Sie FirstViewController von einem Storyboard aus instanziieren oder von einer NIB laden.

Auch immer, wenn Sie nur eine neue Instanz von FirstViewController schaffen dies nicht reflektieren, was ändert sich der Benutzer auf seine Elemente „auf dem Bildschirm“ gemacht hat, aber jedes Element lbl einschließlich wird der Standardwert haben.

Mögliche Lösungen:

  • Holen Sie sich die aktive FirstViewController Instanz in applicationWillTerminate(_:) und speichert ihren lbl Text
  • Ich weiß nicht, was Ihre Anwendung tut, aber Ansichten sollten Ihr Datenmodell zeigen so ziemlich Ihre Daten speichern Modell.
  • Werfen Sie einen Blick auf Preserving and Restoring State und wahrscheinlich die View Controller Programming Guide for iOS im Allgemeinen.
Verwandte Themen