NSUserDefaults + 枚举 =
.UserDefaults 有两个主要功能。它将让您通过字符串类型的枚举访问 NSUserDefaults,因此您不必每次使用枚举作为 NSUserDefaults 的键时都输入 .rawValue。此外,此扩展还添加了方法,可让您轻松地将 RawRepresentable 枚举存储在 NSUserDefaults 中。
import DotUserDefaults
通常,您会定义常量来访问您的用户默认值,或者如果您喜欢冒险,可以直接输入字符串。现在,您可以通过 Enums 安全地访问 NSUserDefaults,而不必每次都使用 rawValue。
enum MyDefaults: String {
case WelcomeText = "welcomeText"
}
func viewDidLoad() {
super.viewDidLoad()
welcomeLabel.text = NSUserDefaults.standardUserDefaults().stringForKey(MyDefaults.WelcomeText)
}
func updateWelcomeText(text: String) {
NSUserDefaults.standardUserDefaults().setObject(text, forKey: MyDefaults.WelcomeText)
}
默认情况下,您只能将对象存储在 NSUserDefaults 中,除非您勇敢到足以使用 NSData 进行转换。此便利扩展允许您“存储”并访问枚举,而无需进行太多转换。它仅限于 String、Int、Float、Double 类型的 RawRepresentable 枚举。
enum MyDefaults: String {
case WelcomeText = "welcomeText"
}
enum WelcomeText: String {
case Hai = "👋"
case Cheers = "🍻"
case Cool = "👌"
}
func viewDidLoad() {
super.viewDidLoad()
welcomeText = NSUserDefaults.standardUserDefaults().stringForKey(MyDefaults.WelcomeText)
}
func updateWelcomeText(text: WelcomeText) {
NSUserDefaults.standardUserDefaults().setObject(text, forKey: MyDefaults.WelcomeText)
}
Gustavo Saume,[email protected]
DotUserDefaults 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。