ios - 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
}
}
解决方案
您需要在声明之前检查文本字段是否为空number
。
当该字段为空时,这将使number
nil 像现在一样
let number = Int(inField.text!)
推荐阅读
- laravel - 返回不同数据库中多租户 api 中的所有订单
- c# - PowerBIAPI - 选择器 # 不支持操作 - 连接详细信息包含参数” - 更新报表的 PowerBI 数据集中的 ServerName
- node.js - Vercel - 未找到“ZLIB_1.2.9”
- docker - 使用 github 操作构建 nuxt 应用程序的 docker 映像失败(超出堆内存大小)
- jquery-file-upload - blueimp jQuery-File-Upload 使用 user_session 自定义文件名上传文件
- python - 将 .txt 文件转换为 Python 中的数据框,以将特定行作为列名
- c++ - 有没有一种访问函数外部信息的好方法?
- pyaudio - 尝试运行 asr 代码时无法识别 pyaudio
- python - 无法安装pycrypto,python 3.10,如何解决?
- javascript - 在图像上居中文本(并做出响应)?