在Xcode Swift中保存和加载整数

3

我想保存一个整数,以便在切换页面或关闭游戏后仍然保留该数值。我编写了以下代码来改变这个数字,但是当我切换页面并返回到该页面时,如何保存并加载该数字。

更改的代码:

@IBAction func MoneyPress(sender: AnyObject) {

Money += 1

var MoneyNumberString:String = String(format: "Dollars:%i", Money)
self.DollarsLabel.text = (string: MoneyNumberString)

}
2个回答

4
如果数据量不大,我保存和传递数据以及在应用程序运行期间将其持久化的策略是将值存储在NSUserDefaults中。
设置值:当您首次获取或更改数据时,请将其存储在NSUserDefaults中。
@IBAction func MoneyPress(sender: AnyObject) {
    Money += 1
    var MoneyNumberString:String = String(format: "Dollars:%i", Money)
    self.DollarsLabel.text = (string: MoneyNumberString)
    let defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults() //This class     variable needs to be defined every class where you set or fetch values from NSUserDefaults
    defaults.setObject(MoneyNumberString, forKey: "money")
    defaults.synchronize() //Call when you're done editing all defaults for the method.
}
加载一个值: 当你需要获取值时,只需从NSUserDefaults中获取即可。
@IBAction func loadButton(sender: UIButton) {
    let defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
    var money = defaults.valueForKey("money") as? String
    dollarLabel.text! = money
}

要删除存储的数据,您只需要为先前设置的每个键调用removeObjectForKey函数即可。
let defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
defaults.removeObjectForKey("money")
defaults.synchronize()

关于NSUserDefaults有用的资料

NSUserDefaults类参考:链接此处


1
我对获取值的部分有点困惑。是否有一种方法可以有一个保存按钮,它会保存美元标签的数据,然后再有一个加载按钮将其恢复到保存的状态? - SRL
答案取决于标签是否与按钮在同一视图中。请查看“加载值”部分中我编辑的代码是否有所帮助。 - Blake Morgan
1
现在它可以工作了,但还有一个问题。当我加载它并按下按钮添加金额时,它会从0开始而不是显示的数字。我不确定,但可能与我在dollarLabel.text! = money!上加了一个!有关。 - SRL
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Blake Morgan
首先,它让我在money后面添加一个!。然后,我尝试了一下,当我尝试切换视图时它崩溃了。是的,当它对我有效时,我会点击它是正确答案的。 - SRL
显示剩余3条评论

4
你可以使用 NSUserDefaults 来实现此功能。

保存数值

NSUserDefaults.standardUserDefaults().setInteger(money, forKey: "MoneyKey");

获取数值

NSUserDefaults.standardUserDefaults().integerForKey("MoneyKey");

因此,可以在viewDidLoad中检索值并加载数据:

override func viewDidLoad()
{
    super.viewDidLoad()
    loadWebView()
    var money = NSUserDefaults.standardUserDefaults().integerForKey("MoneyKey");
}

当您第一次进入视图时,货币的价值将为0


删除数值

如果您需要从NSUserdefaults中删除一个数值,您可以使用以下方法:

NSUserDefaults.standardUserDefaults().removeObjectForKey("MoneyKey")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接