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