微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何确保 TextField 中的双重输入? 迅速

如何解决如何确保 TextField 中的双重输入? 迅速

这里是 Swift 的新手。我正在制作一个应用程序,它将通过 TextField 从用户那里获取价格,并计算小费。为了不崩溃,我希望它只需要一个有效的 double,但我不确定如何做。

处理这个过程的按钮函数

@IBAction func calculate_eighteen_perc(_ sender: Any) {
    let bill:Double = round(Double(user_bill_input.text!)! * 100) / 100.0
    let tip:Double = round(bill * 0.18 * 100) / 100.0
    let total:Double = bill + tip
    result_display.text = "Tip Amount: $\(tip); Total: $\(total)"
}

据我所知,会导致程序崩溃的情况是:

  1. 数字前的空格。
  2. 输入中的任何非数字字符。
  3. 多个小数点。
  4. 空输入(nil)。

有没有办法优雅地处理这个问题,而不用写一个条件来检查每个案例? 在此先感谢您的帮助。

解决方法

由于您确定的原因,您通常希望避免强制解包 - 无效条目会使您的应用程序崩溃。如果用户的输入不是 Double,Double(user_bill_input_text) 不会自己使您的应用程序崩溃。从字符串转换为 Double 的返回类型是可选的 Double,如果出现您确定的无效输入条件之一,则其值将为零。

然后,您可以使用一个保护语句,如果该值非零,则该函数的其余部分将执行。如果是,您可以设置错误条件并安全退出函数。

@IBAction func calculate_eighteen_perc(_ sender: Any) {
    let input = Double(user_bill_input_text)
    guard let input = input else {
        print("Invalid entry. Try again.")
        return
    }
    // put the rest of the code that you only want to execute if the input 
    // is a valid Double here
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。