作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我怎样才能将用户默认值乘以一个数字
当我尝试将我的用户默认值乘以我的 FeesVC
中的一个数字时,我的应用程序崩溃了
将小计传递给 subtotalLbl(单独使用时)效果非常好,但如果我在尝试计算 salesTaxLbl 和 overallTotalLbl 时尝试用 UserDefault
乘以任何数字,应用程序就会崩溃
class FooterCell: UITableViewCell {
@IBOutlet weak var cartTotal: UILabel!
@IBOutlet weak var totalInfoBtn: UIButton!
@IBAction func additionalFeesOnClicked(_ sender: Any) {
UserDefaults.standard.set(cartTotal.text, forKey: "PASS_DATA")
}
}
class FeesViewController: UIViewController {
@IBOutlet weak var subtotalLbl: UILabel!
@IBOutlet weak var salesTaxLbl: UILabel!
@IBOutlet weak var overallTotalLbl: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// passes data into FeesVC Fine
let subtotal = UserDefaults.standard.object(forKey: "PASS_DATA")
// app crashed when trying to multiply the user default by a number
let tax = Float(subtotal)! * Float(0.0825)
let total = Float(subtotal)! + Float(tax)
subtotalLbl.text = "\(subtotal!)"
salesTaxLbl.text = "\(Tax)"
overallTotalLbl.text = "\(total)"
}
@IBAction func returnButton(_ sender: Any) {
dismiss(animated: true, completion: nil)
print("Close Taxes and Fees")
}
}
最佳答案
像这样处理 UserDefaults
中的值时,用自定义的 get
和 set
将它们包装起来通常会很有帮助变量,以便您可以像访问普通变量一样访问它们。
var subTotal: Float {
get {
return UserDefaults.standard.float(forKey: "PASS_DATA")
}
set {
UserDefaults.standard.set(newValue, forKey: "PASS_DATA")
}
}
这将为您提供一个像普通 Float
一样执行的变量,因此您可以对其进行操作而不必担心实现细节。
现在,您可以做到这一点和一切Just Works (tm)。
let tax = subtotal * Float(0.0825)
已更新以显示此操作。
遇到断点时,我在底部控制台的右侧运行 po UserDefaults.standard.float(forKey: "PASS_DATA")
命令。这允许您查询值。
当没有为 PASS_DATA
设置值时,您将获得默认值 0.0
,如下所示:
但是,如果已经设置了一个值,那么您将看到它,就像我在打印它之前设置 5.0
的地方看到的那样。
关于ios - 如何将 userDefault 乘以一个数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59291630/
我是一名优秀的程序员,十分优秀!