2016-07-04 5 views
1

Итак, я стараюсь следовать быстрой серии лекций в Standford. Однако, когда я пытаюсь воспроизвести следующий код, он получает ошибку «lldb». Любая помощь будет оценена .. Большое спасибоlldb error in swift

import UIKit 
class ViewController: UIViewController { 


@IBOutlet weak var display: UILabel! 

var userIsIntheMiddleOfTyping = false 

@IBAction func touchDigit(_ sender: UIButton) { 
    let digit = sender.currentTitle! 

    if userIsIntheMiddleOfTyping { 
     let textCurrentInDisplay = display.text! 
     display.text = textCurrentInDisplay + digit 
    } else { 
     display.text = digit 
    } 
    userIsIntheMiddleOfTyping = true 
    } 
} 

Это отметить, что, когда откроется отладчик следующая строка кода выделена,

let digit = sender.currentTitle! 
+1

Что ошибка, что компилятор показывает? Это найти нуль? ! в конце строки означает, что вы принудительно разворачиваете необязательное значение, которое в то время могло бы быть нулевым. –

+0

Подключен ли ваш '@ IBOutlet'? – Idan

+0

Можете ли вы показать информацию об ошибке консоли? – Siam

ответ

0

В строке кода ниже, вы заставляете развертывание необязательного значения.

let digit = sender.currentTitle! 

Компилятор пытается сказать вам это.

Как решить проблему?

  1. Убедитесь, что все значения подключены и не являются nil. В этом конкретном случае розетка @IBOutlet weak var display: UILabel! может не подключаться.
  2. Если вы не уверены, что если значение nil или нет, используйте условные операторы и обработайте случай nil. Например:

    if let digit = sender.currentTitle { 
        print("Great, its working") 
    } else { 
        print("error: currentTitle is nil") 
    }