这是将价格设置为用户默认值(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 PriceString类型

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
    }

10-08 12:12