iOS 应用程序更新和用户默认值

标签 ios swift

我开发了一款游戏,并于大约 2 个月前将其发布到 App Store(Supernatural Slayer)。游戏使用用户默认值来存储玩家数据,例如等级、经验值、金币等。

我想更新游戏以包含我根据 swift 黑客帮助编写的审核请求。 (我还必须切换广告网络,因为图表增强无缘无故无限期地暂停了我的帐户......)

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

我的保存和加载函数代码如下,如果我添加 reviewRequest 变量及其保存和加载行,这是否会导致更新我的应用程序的现有用户出现错误?我已经更新了我的 Mac 操作系统和 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 检查以避免尝试检索空 key 。

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
        }
    }

关于iOS 应用程序更新和用户默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47816137/

相关文章:

ios - Xcode 和 Swift。宽度是自动计算的,但在 iPhone Xr 上一切正常,在 iPhone X 上看起来很糟糕

ios - 动画文本字段像 Messenger 和 Whatsapp 一样扩展

string - Swift 从字符串中提取 Int、Float 或 Double 值(类型转换)

ios - 通过遍历字典显示随机问题

ios - 将对象添加到 NSMutableArray 导致崩溃

objective-c - NSStream 处理事件给出状态 4

ios - iOS防火墙应用程序

ios - 事件指示器在 iOS 中不起作用?

ios - 用于更改标签答案的简单文本字段

ios - iOS:像 Material 设计文本字段占位符一样为占位符设置动画