首页 > 解决方案 > Swift4:在展开可选值时意外发现 nil

问题描述

这是我的代码。我试图修复文本字段为空时应用程序崩溃的问题。这种方法在我以前的应用程序中有效。

按下带有空 UITextField 应用程序的 touchCheck 按钮时崩溃并出现以下错误:

线程 1:致命错误:在展开可选值时意外发现 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

    }


}

标签: iosswift

解决方案


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

当该字段为空时,这将使numbernil 像现在一样

let number = Int(inField.text!)

推荐阅读