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.
Was ist FirstViewController und warum erstellen Sie es in ApplicationWillTerminate? –
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
Ich versuche, lbl.text als UserDefault in der ApplicationWillTerminate zu speichern und keine Steckdose angeschlossen ist. –