2016-03-28 31 views
-1

„Ausführung unterbrochen wurde:“ Ich habe dieses Stück CodeSwift readLine! verursacht fatalen Fehler

func sell() throws{ 
    while(true) 
    { 
     var choice : String? 
     print("Please press a number from 1 to 3\n") 
     let product = readLine(stripNewline: true)! 
     switch product 
     { 
      case "1": 
       // 
      case "2": 
       // 
      case "3": 
       // 
      default: 
       choice = "Invalid" 
       try sell() 
     } 
} 

try sell() 

Und es gibt mir den Fehler

Ausführung Grund exc_bad_instruction unterbrochen wurde

erkannte ich, dass das ! verursacht den Fehler. Wenn ich es entferne, habe ich ein Problem mit den Vergleichen innerhalb switch.

Wer weiß, was ist das Problem?

Antwort

0

Wie wäre es zu erstellen, wenn wir zu überprüfen, ob dieser Wert enthält oder ist es nil

let product = readLine(stripNewline: true) 
    if let productNo = product { 
     switch productNo { 
      //your same code in switch 
} 
1
func foo()->Int { 
    print("Please press a number from 1 to 3") 
    while true { 
     if let l = readLine(), 
      let i = Int(l) { 
      if (1..<4).contains(i) { 
       return i 
      } else { 
       print("Number must be in range from 1 to 3") 
      } 
     } else { 
      print("Please press a number") 
     } 
    } 
} 
let r = foo() 
print("You chose", r) 

ein Beispiel für ...

Please press a number from 1 to 3 
u 
Please press a number 
7 
Number must be in range from 1 to 3 
45 
Number must be in range from 1 to 3 
h76 
Please press a number 
1 
You chose 1 
Program ended with exit code: 0