2016-07-01 8 views
0

Während ich versuche, es an temporäre Variablen zu übergeben, scheint es nicht zu passieren.Wie extrahiert man Werte aus Eureka-Formularen in schnelle lokale Variablen?

Zwar gibt es keine Fehler, während die App bauen, wenn ich versuche, einen Wert für „rateOfPaddy“ einzugeben, es scheitert, unter Berufung auf „fatale Fehler: unerwartet gefunden null, während ein optionaler Wert auspackt“

Bitte lassen Sie mich Wissen Sie, ob ich irgendetwas falsch mache, entweder in Bezug auf Swift oder Eureka?

form +++ Section() 
       <<< DateTimeRow() { 
        $0.tag = "RecordDateTag" 
        $0.title = "Date" 
        $0.value = NSDate() 
        }.cellSetup { cell, row in 
         cell.textLabel?.textColor = UIColor.blackColor() 
        }.onCellHighlight { _ in 
         if let dateInput = formInput["RecordDateTag"] as? String { 
          self.dateInputValue = dateInput 
         } 
        }.onCellUnHighlight { _ in 
         if let dateInput = formInput["RecordDateTag"] as? String { 
          self.dateInputValue = dateInput 
         } 
       } 

I verwendet .onChange Rückruf, um die Informationen zu lokalen Variablen zu überprüfen und zu übergeben, die nicht von Nutzen waren. .onCellHighlight und .onCellUnHighlight-Kombination haben es auch nicht geschafft !!

Antwort

1

Versuchen Werte Aufruf der Funktion als here dokumentiert

Sie können eine Methode wie unten erstellen und sie von OnChange Callbacks aufrufen

+0

Ich hatte es getan, wie Sie sagten, und ich war in der Lage, die Werte zu extrahieren. Aber ich möchte erwähnen, dass Sie sich in Ihrer Syntax geirrt haben. func updateValues ​​() { lass allFormData = formInput.values ​​() wenn dateInput = allFormData ["RecordDateTag"] als? String { self.dateInputValue = dateInput } } – Shyam

+0

Auch ich glaube onChange ist nicht erforderlich. Nachdem das Formular instanziiert wurde, werden die Werte scheinbar im Wörterbuch gespeichert. – Shyam

0

Der Fehler „fatalen Fehler: unerwartet null gefunden, während ein optionaler Wert auspackt“ bedeutet, dass Sie eine optionale auszupacken versuchen, die nil als Wert hat.

Überprüfen Sie, dass alle formInput [KEY] einen Wert des Typs hat, den Sie erwarten, bevor Sie die Unwrap mit der als erzwingen!

Sie aus dem optionalen profitieren könnten Bindung

if let value = formInput["Some"] as? Int 
{ 
    //Value exist and is an Int 
} 
else 
{ 
    print("Not an Int") 
} 

Weitere Referenzen:

Swift Type Casting

Swift Optionals

+0

Es hat geholfen. Ein grundlegender Fehler, den ich gemacht habe. Außerdem habe ich die Frage aktualisiert. Bitte guck dir das an. – Shyam

+0

@Shyam Basierend auf dem Code, den Sie freigegeben haben, sehe ich nichts falsch, wenn Sie nicht den erwarteten Wert von 'FormInput [" RecordDateTag "] erhalten' kann, dass es keinen Wert für diesen Schlüssel gibt oder dass der Wert gespeichert ist kein String. Setzen Sie dort einen Haltepunkt und überprüfen Sie den Datentyp an diesem Punkt. Wo instanziieren Sie das Wörterbuch? – APesate

+0

Sie waren auf Punkt! Ich hatte das Wörterbuch innerhalb der Methode instanziiert, die das Formular erstellt. Sobald ich es draußen hatte, konnte ich die Werte weitergeben. – Shyam