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

时间:2019-04-21 05:48:40

标签: ios swift uitextfield

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

我已经设置了布局,标签,文本字段等。但是,我遇到的一个问题是文本字段框中用户输入的可选字符串。我试图将用户输入(字符串?)与滑块值(即Float)相乘。

我已经尝试了几种方法,强制展开,保护语句,if let和类型强制转换,但是在Xcode不允许我将两种类型混合在一起的情况下,我得到的一切都差不多。我也已经将文本字段输入到可选的Float(Float?)中,但是Xcode仍然希望我找到一种将两种类型组合在一起的方法。

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

private let priceTextField: UITextField = {
    let textField                   = UITextField()
    textField.placeholder           = "$00.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()))%):"
}

1 个答案:

答案 0 :(得分:2)

您的计算似乎很好,但可能由于设置Float代替StringtotalTipAmount而引发了编译器错误。您可以尝试以下操作,

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