通常的UserDefaults本地存儲api使用方式像這樣比價繁瑣
如下:
//寫入
let defaults = UserDefaults.standard
defaults.set(20, forKey: "Age")
defaults.set(CGFloat.pi, "PI")
//讀取
defaults.integer(forKey: "Age")
改為如下優(yōu)化使用方式:
其中#function是Swift內(nèi)置編譯符號贺嫂,指代包含這個符號的方法或?qū)傩悦@里等同于字符串startup
import Foundation
extension UserDefaults {
// 通過下標(biāo)使用枚舉
subscript<T: RawRepresentable>(key: String) -> T? {
get {
if let rawValue = value(forKey: key) as? T.RawValue {
return T(rawValue: rawValue)
}
return nil
}
set { set(newValue?.rawValue, forKey: key) }
}
subscript<T>(key: String) -> T? {
get { return value(forKey: key) as? T }
set { set(newValue, forKey: key) }
}
}
struct Preference {
/** 開機(jī)啟動 */
static var startup: Bool {
get { return UserDefaults.standard[#function] ?? false }
set { UserDefaults.standard[#function] = newValue }
}
}
使用方式如下,代碼干凈多了
寫入
Preference.startup = true
讀取
print(Preference.startup)
Swift內(nèi)置編譯符號說明: