Swift 用户默认值 (2017)
Swift UserDefaults (2017)
我是 Xcode 的新手,目前正在制作一个应用程序,您有 "bananas / money" 的金额,您可以掷硬币,您要么赢 2 倍,要么输掉赌注。
(仅供体验)
我的游戏可以正常运行,我现在刚刚决定,我想在应用程序关闭和启动时保存货币;使用 NSUserDefaults.
我已经设置了 NSUserDefaults,它正在运行。它显示的是我上次关闭应用程序时拥有的货币,我只能在 0 和我的货币之间下注。 - 太棒了!
然而,尽管显示了我的全部货币,并且我可以下注我的全部货币,但这一切背后的数学仍然很困难。
应用程序关闭后,它会将整数放回 0,因为这是我在创建变量时在 viewDidLoad 上方声明的内容。
没看懂?假设我有 30 根香蕉,我准备赌 30 根香蕉。如果我赢了,我将总共拥有 30 个香蕉,如果我输了,我将拥有 -30 个香蕉。 (整数由于某种原因设置为 0)
我需要一种方法来将整数设置为我上次保存的; "currencySave"。
- 我需要一种方法来检测应用程序是否是第一次打开;如果是,则必须从常量 integer/currency.
开始
代码:
我所有的变量都是整数。
betVar; the variable / value, that you're betting
currencyVar; the variable / value, that you're having. (Your cash)
currencySave; the name I've saved my integer into
以上viewDidLoad
let defaults = UserDefaults.standard
var currencyVar = Int(0)
var betVar = Int(0)
viewDidLoad
let currencyVar = defaults.integer(forKey: "currencySave")
labelCurrency.text = String("$ \(currencyVar)")
betVar = 0
labelBet.text = String("$ \(betVar)")
滑块,您可以从中选择投注金额
let currencyVar = defaults.integer(forKey: "currencySave")
let currentValue:String = String(Int(sender.value))
betVar = Int(currentValue)!
labelBet.text = currentValue
labelSlider.maximumValue = Float(currencyVar)
labelSlider.minimumValue = Float(0)
labelBet.text = String("$ \(currentValue)")
赢得赌注时的数学(当您点击 'bet' 时它会从您那里拿走钱,这意味着,如果您输了,什么也不会发生.)
self.currencyVar = self.currencyVar + self.betVar*2
self.labelBet.text = String("\(self.betVar*2)")
self.labelBet.textColor = UIColor.green
我的整数保存方式
defaults.set(currencyVar, forKey: "currencySave")
defaults.synchronize()
您似乎正在创建具有相同名称的局部变量,因此 属性 被忽略了。
在顶层声明
var currencyVar = 0 // the compiler infer the Int type.
在viewDidLoad
删除let
self.currencyVar = defaults.integer(forKey: "currencySave")
在Slider中,你...只使用实例变量,删除整行
让 currencyVar = defaults.integer(forKey: "currencySave")
并添加 self
(尽管不是必需的)以指示 属性。
labelSlider.maximumValue = Float(self.currencyVar)
我是 Xcode 的新手,目前正在制作一个应用程序,您有 "bananas / money" 的金额,您可以掷硬币,您要么赢 2 倍,要么输掉赌注。 (仅供体验)
我的游戏可以正常运行,我现在刚刚决定,我想在应用程序关闭和启动时保存货币;使用 NSUserDefaults.
我已经设置了 NSUserDefaults,它正在运行。它显示的是我上次关闭应用程序时拥有的货币,我只能在 0 和我的货币之间下注。 - 太棒了!
然而,尽管显示了我的全部货币,并且我可以下注我的全部货币,但这一切背后的数学仍然很困难。 应用程序关闭后,它会将整数放回 0,因为这是我在创建变量时在 viewDidLoad 上方声明的内容。
没看懂?假设我有 30 根香蕉,我准备赌 30 根香蕉。如果我赢了,我将总共拥有 30 个香蕉,如果我输了,我将拥有 -30 个香蕉。 (整数由于某种原因设置为 0)
我需要一种方法来将整数设置为我上次保存的; "currencySave"。 - 我需要一种方法来检测应用程序是否是第一次打开;如果是,则必须从常量 integer/currency.
开始代码:
我所有的变量都是整数。
betVar; the variable / value, that you're betting
currencyVar; the variable / value, that you're having. (Your cash)
currencySave; the name I've saved my integer into
以上viewDidLoad
let defaults = UserDefaults.standard
var currencyVar = Int(0)
var betVar = Int(0)
viewDidLoad
let currencyVar = defaults.integer(forKey: "currencySave")
labelCurrency.text = String("$ \(currencyVar)")
betVar = 0
labelBet.text = String("$ \(betVar)")
滑块,您可以从中选择投注金额
let currencyVar = defaults.integer(forKey: "currencySave")
let currentValue:String = String(Int(sender.value))
betVar = Int(currentValue)!
labelBet.text = currentValue
labelSlider.maximumValue = Float(currencyVar)
labelSlider.minimumValue = Float(0)
labelBet.text = String("$ \(currentValue)")
赢得赌注时的数学(当您点击 'bet' 时它会从您那里拿走钱,这意味着,如果您输了,什么也不会发生.)
self.currencyVar = self.currencyVar + self.betVar*2
self.labelBet.text = String("\(self.betVar*2)")
self.labelBet.textColor = UIColor.green
我的整数保存方式
defaults.set(currencyVar, forKey: "currencySave")
defaults.synchronize()
您似乎正在创建具有相同名称的局部变量,因此 属性 被忽略了。
在顶层声明
var currencyVar = 0 // the compiler infer the Int type.
在viewDidLoad
删除let
self.currencyVar = defaults.integer(forKey: "currencySave")
在Slider中,你...只使用实例变量,删除整行
让 currencyVar = defaults.integer(forKey: "currencySave")
并添加 self
(尽管不是必需的)以指示 属性。
labelSlider.maximumValue = Float(self.currencyVar)