2015-07-26 3 views
0

Я пытаюсь иметь переключатель о внутренней части, если проверка личных данных целыхпереключатель заявление внутри, если заявление

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?' 

Я не понимаю почему это не сработает.

+0

Показать, где вы указали и присвоили 'variable' –

ответ

2

3 является Int но variable является Int? (необязательный 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") 
    } 
} 
0

вара: 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") 
} 
} 
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 скор 2,0. Использовать println в Swift 1.2

Смежные вопросы