我已经开发了一款游戏,并于大约2个月前将其发布到App Store(超自然杀手)。游戏使用用户默认设置来存储玩家数据,例如关卡,xp,黄金等。

我想更新游戏,使其包含我根据迅速进行黑客攻击而编写的审阅请求。 (由于图表提升功能无缘无故无限期地暂停了我的帐户,因此我也不得不切换广告网络...)

我的问题是,我似乎记得4到6个月前的开发过程中,每次添加另一个变量以从用户默认设置进行保存和加载时,都会导致现有游戏崩溃,我必须从头开始进行删除和重新加载将游戏放到我的手机上,以清除用户默认设置。但是现在我添加了reviewRequest变量,它不会导致相同的错误,所以我不确定是否测试不正确,并且一旦更新,我所有的玩家都会迷失进度...

我的保存和加载功能代码如下,如果我添加了reviewRequest变量及其保存和加载行,这会对更新我的应用程序的现有用户造成错误吗?自从Mac OS和Xcode崩溃以来,我已经对其进行了更新,也许这就是为什么它不再成为问题了?

let defaults = UserDefaults.standard
var reviewRequest = 0

func save() {
    defaults.set(reviewRequest, forKey: "Review Request")
    defaults.set(player.name, forKey: "PlayerName")
}

func load() {
    player.name = defaults.object(forKey: "PlayerName") as! String
    reviewRequest = defaults.integer(forKey: "Review Request")
}

最佳答案

您应该尝试添加nil检查,以避免尝试检索空键。

func load() {

    if defaults.object(forKey: "PlayerName") != nil {
      player.name = defaults.object(forKey: "PlayerName") as! String
    } else {
     //Default name or something similar
    }

   if defaults.object(forKey: "ReviewRequest") != nil {
        reviewRequest = defaults.integer(forKey: "Review Request")
        } else {
         reviewRequest = 0
        }
    }

10-08 06:07
查看更多