
164
|
第
5
章
有时,在
UserDefaults
中提供一些默认值是很有必要的,特别是当用户没有为某
个值提供一个确切的值时,默认值将变得很有用。
例如,假设游戏开始的第一关是“关卡
1
”,我们将玩家所通过的关卡以
currentLevel
的名字存放到
UserDefaults
中。当游戏启动时,我们会从
UserDefaults
中查询
currentLevel
值,然后初始化游戏:
let levelNumber = defaults.integer (forKey: "currentLevel")
但是,如果玩家是第一次玩这个游戏,那会发生什么样的情况?如果
currentLevel
没有指定任何值,当这句代码第一次执行时,我们会得到一个
0
,这是完全不对的,
因为我们的游戏是从关卡“
1
”开始。
要解决这个问题,我们可以注册默认值。也就是给
UserDefaults
提供一个由键
–
值对构成的字典,这样当某些值未被指定的情况下就使用字典中指定的默认值:
let defaultValues = ["currentLevel": 1]
defaults.register(defaults: defaultValues)
let levelNumber = defaults.integer(forKey: "currentLevel")
// levelNumber
的值要么是
1
,要么是最后一次保存在
UserDefaults
中的相应值
如果用户想修改我们存放在
UserDefaults
中的值,这真的是非常非常的简
单。某些第三方工具能够直接访问和修改存放在 ...