computed-properties - Swift 中 userDidSetUp 的 UserDefaults 初始值
问题描述
导航 rootViewController 取决于用户设置,因为我试图检查用户是否在主屏幕启动之前完成了所有入职表单。我的问题是如何在导航中为 UserDefaults 设置初始值。这总是打印“假”
extension UserDefaults {
var didUserSetUp: Bool? {
get {
///// Register the app default:
/// Initialize value from UserDefaults returns false
UserDefaults.standard.register(defaults: ["didUserSetUp" : false])
return UserDefaults.standard.bool(forKey: "didUserSetUp")
}
set {
/// Set value to UserDefaults
UserDefaults.standard.set(newValue, forKey: "didUserSetUp")
}
}
}
方法是在代码中设置:
UserDefaults.standard.didUserSetUp = false
if UserDefaults.standard.didUserSetUp { }
解决方案
您需要展示如何尝试使用您创建的属性的示例代码,但我尝试了您在此处显示的内容,并且能够使其按预期工作。这是我所做的:
extension UserDefaults {
var didCompleteOnboarding: Bool? {
get {
UserDefaults.standard.register(defaults: ["didCompleteOnboarding": false])
return UserDefaults.standard.bool(forKey: "didCompleteOnboarding")
}
set {
UserDefaults.standard.set(newValue, forKey: "didCompleteOnboarding")
}
}
}
然后在根视图控制器中:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
UserDefaults.standard.didCompleteOnboarding = true
print(UserDefaults.standard.didCompleteOnboarding ?? false)
}
}
true
在控制台中打印。
推荐阅读
- python - 如何获取位于通过单击 tkinter 中不同窗口中的按钮出现的窗口中的 GUI 文本字段的参数?
- c - 创建名称取自变量值的新文件
- c# - 通用扩展 - 服务未实现接口成员
- c++ - 如何修复崇高文本中的编码问题
- arrays - 如何在离子3中显示数组数组
- python - Keras 2:在“合并”层中使用 lambda 函数
- flutter - 从firestore获取地图内的地图
- python - 如何在 Python 中将变量传递给 bash 命令
- pycharm - 在 PyCharm 中使用 tensorflow2.0 时出现“找不到参考”错误
- postgresql - 无法在 Linux 上登录新的 PostgreSQL 数据库