这是将价格设置为用户默认值(LoggedInUserSave
是对UserDefault
的引用):
let currentValue = Int(sender.value)
LblPriceValue.text = "\(currentValue)"
Price = "0," + String(describing: currentValue)
LoggedInUserSave.set(Price, forKey: "PriceFilter")
我需要使用
price
值作为Int
。我正在使用以下代码将price
转换为int
:p = LoggedInUserSave.value(forKey: "PriceFilter") as! String
Price : Int = Int(p)!
在做这个事情的同时获得零价值。
最佳答案
我注意到,您的代码中存在几个异常(不正确地使用了课程的命名约定),此行(设置值时)表示var Price
是String
类型
Price = "0," + String(describing: currentValue)
您在此处设置的位置(在接收值时)将
Price
表示为integer
。现在,要解决您的问题,请确保:
sender.value
不是nil,只能包含数字字符(否则类型转换将不会成功)现在,在保存时,您将其设置为
"0," + String(describing: currentValue)
,这使得string
文字不能再次转换为Int
。这将是实现您正在尝试的更合适的方法:
if let i = sender.value as? Int {
self.lbl.text = "\(i)"
UserDefaults.standard.set(i, forKey: "Key")
}
_
//..
if let i : Int = UserDefaults.standard.integer(forKey: "Key") {
//do what you want to do with stored value
}