2015-01-27 2 views
0

Скажем, например, 13 был введен в текстовое поле, которое ссылается: numberFieldConfused о сообщении об ошибке (lldb)

@IBAction func calculateButton(sender: AnyObject) { 

      var numInt = numberField.text.toInt() 

      println(numInt) //outputs Optional(13) 
      println(numInt!) //outputs 13 

      if numInt != nil { 

       var unwrappedNum = numInt! 
       var isPrime = true 
       println(unwrappedNum) //Crashes here and outputs (lldb) 

       for var i = 1; i<unwrappedNum; i++ { 
        if unwrappedNum % i == 0 { 
         isPrime = false 

        } 
       } 
      } 
} 

Я проверил в Интернете, и я думаю, что проблема в том, что она оценивает в ноль но я не понимаю, как он будет оценивать нуль, когда только за пределами оператора if это не ноль.

+0

Какое исключение оно показывает? –

+0

Странно, я попробовал свой код на детской площадке и, похоже, работает. – LastMove

+0

Похож на какой-то взмах. Вы пробовали его взад-вперед и перезагрузили? –

ответ

1

Вместо nil проверить, быстрый способ сделать это, чтобы использовать необязательное связывание.

if let unwrappedNum = numInt 
{ 
    println(unwrappedNum) 
} 

или просто вы можете сделать

if let numInt = numberField.text.toInt() 
{ 
    println(numInt) 
} 

numInt будет развернута.

Для получения дополнительной информации читайте: http://www.appcoda.com/beginners-guide-optionals-swift/

+0

На самом деле разница в том, что это нить. Это не объясняет выше поведения. –

0

О, я видел, ваша проблема:

var numInt = numberField.text.toInt() 

Когда "numberField.Text" пустая строка, он выходит из строя.

+0

Нет. Пока он не разворачивается, все в порядке. –

+0

Я пробовал это на детской площадке, и это терпит неудачу здесь, когда numberField.text пуст. – LastMove

+0

Но поле не пусто, когда я тестирую его в симуляторе ios, я ввожу число! – YellowPillow

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