如何利用UserDefaults判断App首次启动,确保首次启动必显示帮助视图?
解决首次启动必显帮助视图的标准方案
问题出在UserDefaults.bool(forKey:)的默认行为——当对应key不存在时(首次启动就是这情况),它会直接返回false,但我们要的是首次启动强制显示。下面是两种标准解决办法:
办法一:直接判断key是否存在
先检查UserDefaults里有没有存过这个设置项,没有就判定为首次启动,强制显示帮助视图,同时把默认值存进去:
func myFunction() { let defaults = UserDefaults.standard let settingKey = "showHelpViewInStartUp" if defaults.object(forKey: settingKey) == nil { // 首次启动,直接显示帮助视图 // show help view // 把默认值设为true,后续用户可修改 defaults.set(true, forKey: settingKey) } else { let shouldShow = defaults.bool(forKey: settingKey) if shouldShow { // show help view } } }
办法二:提前注册默认值
在App启动的早期(比如AppDelegate的didFinishLaunchingWithOptions或者SceneDelegate的willConnectTo方法里),给UserDefaults注册一个默认值,这样读取时如果没存过就会用我们设的true,而不是系统默认的false:
// 先在App启动处注册默认值 UserDefaults.standard.register(defaults: [ "showHelpViewInStartUp": true ]) // 之后直接用原来的逻辑就行 func myFunction() { let shouldShow = UserDefaults.standard.bool(forKey: "showHelpViewInStartUp") if shouldShow { // show help view } }
两种办法怎么选
- 办法一适合需要在首次启动时做额外操作(比如记录首次启动时间)的场景,逻辑直观,完全掌控首次启动的行为。
- 办法二更简洁,注册默认值的操作不会改动实际存储的设置,只是给未设置过的key补个默认值,用户后续修改后会优先用用户设置的值。
内容的提问来源于stack exchange,提问作者swiftPunk
相关产品推荐
相关产品推荐

