首页 文章

Swift4:在解包一个Optional值时出乎意料地发现了nil [重复]

提问于
浏览
0

这个问题在这里已有答案:

这是我的代码 . 当textfield为空时,我试图修复应用程序崩溃 . 这种方法适用于我以前的应用程序 .

使用空的UITextField应用程序按下touchCheck按钮时会出现以下错误:

线程1:致命错误:在展开Optional值时意外发现nil

我没有在stackoverflow上找到任何对我有用的答案 .

另外,我是swift的新手 .

@IBOutlet weak var inField: UITextField!

@IBOutlet weak var outLabel: UILabel!

@IBAction func touchCheck(_ sender: Any) {

    let alert = UIAlertController(title: "Hey!", message: "Text field is empty. This may cause app crash. Please, enter a positive whole number to text field in order to get number checked!", preferredStyle: .alert)

    alert.addAction(UIAlertAction(title: "Got it", style: .default, handler: nil))

    var i = 2

    var isPrime = true

    let number = Int(inField.text!)

    if number == 1 {

        isPrime = true

    }

    if (inField.text?.isEmpty)! {

        self.present(alert, animated: true)

        outLabel.text = String("Text Field is empty!")

    } else if isPrime == true {

        outLabel.text = String("Number \(number ?? 1) is prime!")

        self.view.endEditing(true)

    } else  if isPrime == false {

        outLabel.text = String("Number \(number ?? 1) isn't prime!")

        self.view.endEditing(true)

    }

    while i < number!  {  //error at this line

        if number! % i == 0 {

            isPrime = false

        }

        i += 1

    }


}

2 回答

  • 0

    这个

    guard let number = Int(inField.text!) else { return }
    

    返回一个可选的 int?

    可能是 nil 在使用前检查它

  • 0

    在声明 number 之前,您需要检查文本字段是否为空 .

    当字段为空时,这将使 number 为零

    let number = Int(inField.text!)
    

相关问题