将文本字段留空-崩溃-迅速4

时间:2018-12-06 19:42:24

标签: ios swift null uitextfield unwrap

我正在尝试使用文本字段创建课程平均计算器。但是,如果我只想输入几个标记(即不填写所有文本字段),则会崩溃。

我收到此错误:

线程1:致命错误:展开一个可选值时意外发现nil

在我的代码中,我尝试避免使用此nil值,但是如果我将第一个文本字段保留为空白,则会在第一行出现错误。我对这些文本字段进行了进一步的计算,所以不确定在修复这些行后是否会出现类似的错误。

    if b?.text != nil {
        b?.text = String(Double(b!.text!)!/100)
    }
    if d?.text != nil {
        d?.text = String(Double(d!.text!)!/100)

    }
    if f?.text != nil {
        f?.text = String(Double(f!.text!)!/100)
    }
    if h?.text != nil {
        h?.text = String(Double(h!.text!)!/100)
    }

2 个答案:

答案 0 :(得分:0)

强制展开双重转换

Double(b!.text!)!

是原因,因为空字符串不能转换为double,所以它返回nil,并且当您使用!时,因此崩溃,您需要

if let tex = b , content = tex.text ,  value = Double(content) {
   print(value)
}

也不要将b var设为可选!

 var b:UITextField! // and make sure you init it 

编辑:不要创建其他变量来保存实例变量,直接使用它们

@IBOutlet weak var weight1: UITextField!

if let content = weight1.text ,  value = Double(content) {
   print(value)
   weight1.text = "\(value/100)"
}

答案 1 :(得分:0)

Double(b!.text!)! 

这是原因,您输入的文本(b!.text!)无法转换为两倍,因此最终为nil。

例如:您可能会输入“ 12Th45”,这不能转换为双精度。

无论您不确定该值是否存在,始终使用可选绑定。

谢谢。