我有一个登录视图控制器,用户可以在其中输入他们的偏好,例如是否要激活某些 UI 功能。
我将这些存储为 getter 和 setter 直接访问的变量UserDefaults
,这是其中之一的示例:
class Preferences {
static var likesSpaghetti : Bool {
set (likesSpaghetti) {
UserDefaults.standard.set(likesSpaghetti, forKey: "likesSpaghetti")
}
get {
return UserDefaults.standard.bool(forKey: "likesSpaghetti")
}
}
}
因此,每当我想设置其中任何一个时,我只需编写如下内容:
Preferences.likesSpaghetti = false
现在,我的问题是:我可以在每次用户轻弹开/关开关时设置这些变量,还是应该将首选项保留为局部变量,然后只设置:
Preferences.likesSpaghetti = spaghettiSwitch.isOn
当用户离开时loginViewController
?每次访问都是UserDefault
即时快速的吗?或者它是滞后的,应该善待使用?
关闭这个问题后编辑:所以我学会了不要过早优化,在几十个元素的范围内可能没问题。所以我应该没事。每次用户修改任何内容时,我都会更新,以便我的代码更易于阅读和维护。
感谢大家!