2016-04-20 11 views
0

Meine App hat einen Bildschirm, der einige Eingaben wie title: String?, desc: String?, dueDate: NSDate? nimmt. Wenn alle eingegebenen Eingaben zurückgehen und Daten über Delegate/Protokoll zum vorherigen Bildschirm weiterleiten, blockieren Sie andernfalls die Navigation und zeigen Sie die Popup-Warnung an.Unerwarteter Nil beim Auspacken von String? macht App abgestürzt

Dies ist die Codes Eingaben zu validieren und führen Navigation:

func pushView(sender: AnyObject) { 
    if ......... 
    //Some codes to check inputs 
    else { 
     let aReminder = Reminders(title: self.remTitle.text!, dueDate: self.dueDate, desc: self.remDesc.text!) 

     self.delegate!.addReminder(aReminder) 

     //error drops on this line 
     self.navigationController!.popViewControllerAnimated(true) 
    } 
} 

Die leeren App prüft Eingaben und zeigt Warnungen bestimmt, wie aber, wenn ich alle Textfelder ausfüllen und Änderung picker machen, ich habe einen Fehler unexpectedly found nil while unwrapping an Optional value.

Ich habe einen Standardwert auf dueDate von var dueDate = NSDate() gesetzt, aber immer noch solche Fehler, während die Textfelder alle ausgefüllt sind.

+0

In welcher Zeile ist der Fehler an? – Sulthan

+0

In 'pushView' in der' if' Klausel suchen Sie nach ** oder ** '|| dueDate == nil' bedeutet, dass in der 'else'-Klausel 'dueDate' ebenfalls' nil' sein kann und beim Entpacken den Absturz verursacht. Die einfachste Lösung besteht darin, ''DeadDate' als nicht-optional zu deklarieren, mit einem Standardwert von 'avar dueDate = NSDate()'. Aber dann müssen Sie alle "nil" Überprüfung der Variablen entfernen. – vadian

+0

Yeh Ich habe einen Standardwert 'var dueDate = NSDate()' gesetzt und den Code repariert, um es auszuführen. Aber die "nil" Warnung erscheint immer noch. –

Antwort

0

Ich habe vergessen, einen Navigationscontroller in Main.StoryBoard zu setzen. Also das Problem zu beheben, habe ich es wie folgt festgelegt:

  • ziehen ein Navigation Controller von Objektbibliothek in das Storyboard,
  • dann Strg + ziehen von Navigation Controller dem aktuellen View Controller
  • Select Root View Controller als die Beziehung der beiden