Revision control
Copy as Markdown
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
import Foundation
@propertyWrapper
struct UserDefault<Value> {
private let key: String
private let defaultValue: Value
init(key: String, defaultValue: Value) {
self.key = key
self.defaultValue = defaultValue
}
var wrappedValue: Value {
get {
// Read value from UserDefaults
return UserDefaults.standard.value(forKey: key) as? Value ?? defaultValue
}
set {
// Set value to UserDefaults
UserDefaults.standard.set(newValue, forKey: key)
}
}
}