2017-01-11 104 views
0

如果这是一个初学者问题,请道歉,但我无法在线查找解决方案。我能找到的大部分帮助都没有解决我的问题,并且是针对以前的Swift版本的。在Swift 3中设置UserDefaults的问题

我想在游戏中保留玩家的累积分数。在他们第一次登录时它会是零,但是每次他们玩的时候都会增加,这取决于他们玩了多少回合。

我在我的AppDelegate文件中尝试了一些安排,但现在我有:

UserDefaults.standard.set(Int(100),forKey:"TotalPoints") 

然后,在GameScene的其他部分时,球员的进步,我有:

let defaults=UserDefaults.standard 
var CurrentExtras=defaults.integer(forKey: "TotalPoints") 
CurrentExtras = CurrentExtras+100 
UserDefaults.standard.set(Int(CurrentExtras),forKey:"TotalPoints") 

这适用于游戏更新,但是一旦我关闭了应用程序并重新启动它,它就会回到初始值。我如何检查最初的默认值以确保它不覆盖一个?我是否正确地开始?

回答

2

如果您在AppDelegate中设置默认值,则每次启动应用程序时都将该值设置回100。

尝试更换:

UserDefaults.standard.set(Int(100),forKey:"TotalPoints") 

到:

if UserDefaults.standard.value(forKey: "TotalPoints") == nil { 
    UserDefaults.standard.set(100, forKey: "TotalPoints") 
} 

或:

UserDefaults.standard.register(defaults: ["TotalPoints" : 100]) 

这样只会设置键TotalPoints 100的第一次应用程序启动。

+1

你最初的答案使用'registerDefaults'实际上是一个更好的解决方案。 – rmaddy