首页 > 解决方案 > 在将 textField 传递给函数之前如何测试它是否为空:

问题描述

我有一个接受数字的文本字段。
当在数字键盘区域之外点击以关闭键盘时,它会将文本字段值传递给函数。

当文本字段为空时,我收到 NIL unpacked optional 错误并崩溃。

当文本字段中没有任何内容时,我试图找到一种将“0”传递给变量的方法。

变量

@IBOUTLET weak var per1kCollector: UITextField?
var per1k = 0

关闭键盘并调用函数 per1k 的处理程序抓取文本字段 per1k 需要 0 如果 collector.text 为 NIL

@objc func handleTap(_ recognizer: UITapGestureRecognizer) {
    print("closing number pad")
    
            view.endEditing(true)
            per1k = (Int(per1kCollector!.text!)! ?? 0)

            doSomeMath()
    
}

这一直说明“无法将'int'类型的值转换为预期的参数类型'string'。但是,我正在使用文本字段的Int,并且per1k IS类型int。????

标签: swiftoptionalconditional-operator

解决方案


任何时候你的代码说!你应该期望崩溃。尽量避免它。很少需要它。在这种情况下,只需使用问号:

 per1k = Int(per1kCollector?.text ?? "0") ?? 0

推荐阅读