【问题标题】:Issues with Setting UserDefaults in Swift 3在 Swift 3 中设置 UserDefaults 的问题
【发布时间】:2017-01-11 02:55:42
【问题描述】:

抱歉,如果这是一个初学者问题,但我在网上找不到解决方案。我能找到的大部分帮助都没有解决我的问题,而是针对以前版本的 Swift。

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

我尝试了一些安排,但现在我的 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")

这适用于游戏更新,但一旦我关闭应用程序并重新启动它,它就会恢复到初始值。如何检查初始默认值以确保它没有覆盖?我这样做是否正确?

【问题讨论】:

    标签: swift userdefaults


    【解决方案1】:

    如果您在 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。

    【讨论】:

    • 您使用registerDefaults 的原始答案实际上是一个更好的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多