我正在制作一个应用程序,特别是小费计算器,来练习我的Swift技能。目前正在使用Swift 5。
我已经设置了布局,标签,文本字段等。但我遇到的一个问题是文本字段框中用户输入的可选字符串。我试图将用户输入(String?)与滑块值相乘,这是一个浮点数。
我已经尝试了几种方法,强制解包,保护语句,如果让,并且输入类型,但是我得到类似的东西,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()))%):"
}
你的计算似乎很好,但它可能会抛出编译器错误,将Float
设置为String
而不是totalTipAmount
。您可以尝试如下,
@objc func sliderChange() {
guard let priceText = self.priceTextField.text, let price = Float(priceText) else { return }
totalTipAmount.text = "\(tipSlider.value * price)"
}