2017-08-03 2 views
0

Schneller Neuling versucht hier, eine Datenüberprüfungsfunktion einzurichten, aber mein Code generiert den folgenden Fehler: "Binärer Operator '>' kann nicht auf zwei 'Double?' Operanden "Anfänger Swift 3 Datenvalidierung

func validateDouble(text: String) -> Bool { 
    var result = false 

    // test input to see if it is a positive Double once text is converted 
    if Double(text) > 0.0 { 
     result = true 
    } 
} 

Ich bin ratlos und würde mich über jede Art von Hilfe freuen.

Danke,

Nas

Antwort

2

Denn wenn Sie konvertieren Zeichenfolge es optional Wert zurückgeben Double geben, so kann es gleich Null ist oder nicht. deshalb ist ein Vergleich mit dem genauen Wert nicht möglich. Versuchen Sie es so.

func validateDouble(text: String) -> Bool { 
    var result = false 

    // test input to see if it is a positive Double once text is converted 
    if let doubleValue = Double(text) { 
     if doubleValue > 0.0 { 
     result = true 
     } 
    } 
} 
+0

Wow - die super schnelle Antwort zu schätzen wissen! !! Ich würde mich später mit der Nullmöglichkeit befassen, aber ich sehe, dass die Verzögerung des Umgangs mit Null keine schnelle Strategie ist. Vielen Dank - Sie antworten funktioniert perfekt! – Nas

+0

@Nas Willkommen, Sie haben gesagt, dass Sie in Swift Newbie sind, deshalb erarbeite ich diese Antwort mit langen Weg, sonst kann es auch mit kurzen Weg getan werden. Wenn Sie wissen möchten, – Jaydeep

+0

@Jaydeep, können Sie auch ändern, wenn Bedingung mit Where-Klausel (dh mit ','), die wie schneller Feature ist. zum Beispiel (wenn doubleValue = Double (Text), doubleValue> 0.0 {}) –

1

benötigen Sie den umgerechneten Wert nicht Null stellen Sie sicher, zu überprüfen ist, sollte dies den Trick:

func validateDouble(text: String) -> Bool { 

    // test input to see if it is a positive Double once text is converted 
    guard let value = Double(text), value > 0.0 else { return false } 
    return true 

} 
1

Versuchen Sie, diese

if let doubleValue = Double(text), doubleValue > 0.0 { 
    result = true 
}