我开发了一款游戏,大约2个月前我将它发布到App Store(超自然杀手)。游戏使用用户默认值来存储玩家数据,如等级,xp,黄金等。
我想更新游戏以包含我根据来自swift的黑客攻击帮助编写的审核请求。 (我也不得不切换广告网络,因为图表无限期无限期暂停了我的帐户......)
我的问题是,我似乎记得在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")
}
答案 0 :(得分:0)
您应该尝试添加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
}
}