UserDefault
让UserDefaults使用更简单!
- 使用
@UserDefault
@UserDefault("testRawRepresentable", defaultValue: .day)
var theme: Theme
@UserDefault("testDate", defaultValue: Date())
var launchDate: Date
@UserDefault("testData", defaultValue: Data())
var data: Data
@UserDefault("testURL", defaultValue: URL(string: "http://www.123.com")!)
var url: URL
@UserDefault("testDouble", defaultValue: 0.13)
var doubleValue: Double
@UserDefault("testArray", defaultValue: [1, 2, 3])
var array: [Int]
@UserDefault("testDict", defaultValue: ["12": Theme.day])
var dict: [String: Theme]
@UserDefault("testOptional", defaultValue: nil)
var optionalValue: String?
- 使用
UserDefault.Key
:
extension UserDefaults.Keys {
static let boolKey = UserDefaults.Key<Bool>("boolKey")
static let intKey = UserDefaults.Key<Int>("intKey")
static let userKey = UserDefaults.Key<User>("userKey")
}
@UserDefault(.boolKey, defaultValue: false)
var firstLaunch: Bool
@UserDefault(.userKey, defaultValue: User(name: "张三", age: 18))
var user: User
@UserDefault(.intKey, defaultValue: 5)
var intValue: Int
- 使用
subscript
:
extension UserDefaults.Keys {
static let subscriptDictKey = UserDefaults.Key<[String: User]>("subscriptDictKey")
static let subscriptThemeKey = UserDefaults.Key<Theme>("subscriptThemeKey")
}
let userDefaults = UserDefaults.standard
let subscriptInt: Int = userDefaults["subscriptIntKey"] ?? 0
print("subscriptInt: \(subscriptInt)")
userDefaults["subscriptIntKey"] = 1
let newSubscriptInt: Int = userDefaults["subscriptIntKey"] ?? 0
print("newSubscriptInt: \(newSubscriptInt)")
let subscriptDict = userDefaults[.subscriptDictKey]
print("subscriptDict: \(subscriptDict)")
userDefaults[.subscriptDictKey] = ["1": User(name: "李四", age: 22)]
print("newSubscriptDict: \(userDefaults[.subscriptDictKey])")
let subscriptTheme = userDefaults[.subscriptThemeKey]
print("subscriptTheme: \(subscriptTheme)")
userDefaults[.subscriptThemeKey] = .night
print("newSubscriptTheme: \(userDefaults[.subscriptThemeKey])")