在if语句中切换语句

时间:2015-07-26 02:35:41

标签: ios swift if-statement

我正在尝试在if语句中检查整数

中的switch语句
if variable <= 3 {
    // code
    switch variable {
    case 0: 
        println("0 case")
    case 1: 
        println("1 case")
    case 2: 
        println("2 case")
    case 3: 
        println("3 case")
    default:
        println("error")
    }
}

但是每个案例我都会收到错误

 Binary operator '~=' cannot be applied to operands of type 'Int' and 'Int?'

我不明白为什么这不起作用。

3 个答案:

答案 0 :(得分:2)

3Int,但variableInt?(可选Int)。你必须打开它。

例如,您可以在nil语句中检查它是否为if。如果不是,那么强制解包(使用!)在该条件的范围内是安全的:

许多可能的方法之一:

if variable <= 3 && variable != nil {
    // code
    switch variable! {
    case 0:
        println("0 case")
    case 1:
        println("1 case")
    case 2:
        println("2 case")
    case 3:
        println("3 case")
    default:
        println("error")
    }
}

答案 1 :(得分:0)

var变量:Int?将无法正常工作

var variable = 2
//var variable : Int? // will not work

if variable <= 3 {
// code
switch variable {
case 0:
    println("0 case")
case 1:
    println("1 case")
case 2:
    println("2 case")
case 3:
    println("3 case")
default:
    println("error")
}
}

答案 2 :(得分:0)

如果您的variable是可选项,请注意,如果它是nil,那么在您的初始if语句中,表达式nil <= 3将返回true

因此,您可以选择的最全面的形式(恕我直言)是:

var variable : Int? = ...

switch variable {
case .Some(0):
    print("1 case")
case .Some(1):
    print("2 case")
case .Some(3):
    print("3 case")
case .Some(let x):
    print("We got \(x)")
case .None:
    print("variable is nil")
}

注意:
print是Swift 2.0。在Swift 1.2中使用println