【问题标题】:How do I ensure a double input in a TextField? (Swift)如何确保 TextField 中的双重输入? (迅速)
【发布时间】:2021-06-11 02:34:47
【问题描述】:

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

处理这个过程的按钮函数:

@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. 空输入(无)。

有没有办法优雅地处理这个问题,而无需编写条件来检查每个案例? 提前感谢您的帮助。

【问题讨论】:

  • 你必须自己创建一个函数来验证用户输入。

标签: swift xcode textfield


【解决方案1】:

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

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

@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
}

【讨论】:

    猜你喜欢
    • 2017-03-06
    • 2019-10-21
    • 2021-10-01
    • 1970-01-01
    • 2023-03-19
    • 2020-03-24
    • 1970-01-01
    相关资源
    最近更新 更多