我开发了一款游戏,并于大约 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/