2016-07-21 8 views
1

Während dies für mich einfach zu sein scheint, kann ich nicht herausfinden, wie dies zu programmieren ist. Ich versuche eine if/else if/else-Anweisung zu schreiben, aber es funktioniert nicht. Hier ist, was ich habe:Catch Nil Fehler in If/Else

for value in values { 
    if Float(value) > 0 { 
    print("positive") 
    } else if value == "N/A" { 
    print("not available") 
    } else { 
    print("negative") 
    } 
} 

Werte ist ein Array von Zeichenketten, wobei der Wert entweder „1,0“, „N/A“ oder „-1,0“. Wenn die Array-Iteration "N/V" trifft, wird ein Fehler ausgegeben. Ich habe das Gefühl, dass ich dies in einen Versuch/Fang-Block einbetten muss. Es fängt einen Nullfehler ein. Vielen Dank!

+1

Was ist der Fehler? – TheValyreanGroup

+0

Können Sie zeigen, wie Ihr Werte-Array aussieht? –

+0

Wow, das Code-Snippet, das ich im Lieferumfang hatte, hatte eine kleine Änderung: für mein anderes wenn, druckte ich "nicht verfügbar", aber in meinem echten Code hatte ich "zurück", so dass der Rest meiner Funktion aufgehoben wurde. Danke für die Hilfe und Kommentare! –

Antwort

1

Versuchen Sie, diese

for value in values { 
    if let val = Float(value) { 
     if val > 0 { 
      print("positive") 
     } else { 
      print("negative") 
     } 
    } else { 
     print("not available") 
    } 
} 
1

dieses Array Gegeben

let values = ["1", "-2", "N/A"] 

Sie

for value in values { 
    guard let number = Float(value) else { 
     print("N/A") 
     continue 
    } 
    switch number { 
    case 0: print("zero") 
    case _ where number < 0: print("negative") 
    case _ where number > 0: print("postive") 
    default: fatalError() 
    } 
} 

schreiben kann, und dies ist der Ausgang

postive 
negative 
N/A 
0

Wie wäre es damit:

let values = ["1", "-2", "N/A"] 
for value in values 
{ 
    print( 
      Float(value) == nil ? "not available" : 
      Float(value)! > 0 ? "positive"  
           : "negative" 
     ) 
}