Swift:如何将 UITextField 可选字符串解包为 Float

Swift: How to unwrap UITextField Optional String to Float

我正在制作一个应用程序,特别是小费计算器,以练习我的 Swift 技能。当前使用 Swift 5.

我已经设置了布局、标签、文本字段等。但是我 运行 遇到的一个问题是用户在文本字段框中输入的可选字符串。我正在尝试将用户输入(字符串?)与滑块值相乘,它是一个浮点数。

我尝试了几种方法,强制解包、保护语句、if let 和类型转换,但我得到的所有东西都类似 Xcode 不允许我将两种类型混合在一起。我也已经将文本字段输入到一个可选的 Float(Float?)但是,Xcode 仍然希望我找到一种方法将这两种类型放在一起。

我的文本框输入框是一个变量闭包。

private let priceTextField: UITextField = {
    let textField                   = UITextField()
    textField.placeholder           = "[=11=].00"
    textField.textColor             = UIColor.black
    textField.font                  = UIFont.init(name: "HelveticaNeue-Thin", size: 60)
    textField.keyboardType          = UIKeyboardType.numberPad
    textField.textAlignment         = .center
    textField.borderStyle           = UITextField.BorderStyle.roundedRect
    textField.borderStyle           = UITextField.BorderStyle.none
    textField.sizeToFit()
    textField.translatesAutoresizingMaskIntoConstraints = false
    return textField
}()

这是我的滑块动作函数,它将计算小费金额。

@objc func sliderChange() {
    totalTipAmount.text = (tipSlider.value) * Float(priceTextField.text! as NSString)
    myTipTextView.text = "My Tip (\(Int(tipSlider.value.rounded()))%):"
}

您的计算似乎没有问题,但它可能会抛出一个编译器错误,因为将 Float 设置为 StringtotalTipAmount。你可以尝试如下,

@objc func sliderChange() {
    guard let priceText = self.priceTextField.text, let price = Float(priceText) else { return }
    totalTipAmount.text = "\(tipSlider.value * price)"
}