swift - 在将 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。????
解决方案
任何时候你的代码说!
你应该期望崩溃。尽量避免它。很少需要它。在这种情况下,只需使用问号:
per1k = Int(per1kCollector?.text ?? "0") ?? 0
推荐阅读
- macos - 如何将我的 applescript 部署到多个设备?
- angular - 带有 toHaveBeenCalledTimes 的 Jest 拦截器角度
- c# - .NET Core:基于组成员的安全访问
- python - 我如何使用 Bootstrap4 模态在 Django 中制作功能正常的删除确认弹出窗口
- python - 使用惰性运算符在 Python 中的第一个实例中停止正则表达式失败
- sqlite - 在 MVVM 中查看数据插入时返回空值
- python - 在 IBM CloudFoundry 中部署 Flask 应用程序时出现退出状态 137(内存不足)错误
- javascript - 移除 Input="color" 内框边框
- python-3.x - db.session.commit() 无法在 postgresql(Heroku) 中导入 CSV 文件
- javascript - 来自 LinkedIn 的响应代码 999(请求被拒绝)