Skip to content

Instantly share code, notes, and snippets.

@IuriiIaremenko
Last active November 3, 2020 08:02
Show Gist options
  • Save IuriiIaremenko/bb882eec8ee1973a8590221bf23f8980 to your computer and use it in GitHub Desktop.
Save IuriiIaremenko/bb882eec8ee1973a8590221bf23f8980 to your computer and use it in GitHub Desktop.
UserDefaults with Property Wrapper
//
// UserDefault.swift
//
// Created by Iurii Iaremenko on 24.10.2019.
//
import Foundation
@propertyWrapper
struct UserDefault<T> {
let key: String
let defaultValue: T
init(_ key: String, defaultValue: T) {
self.key = key
self.defaultValue = defaultValue
UserDefaults.standard.register(defaults: [key: defaultValue])
}
var wrappedValue: T {
get {
UserDefaults.standard.object(forKey: key) as? T ?? defaultValue
}
set {
UserDefaults.standard.set(newValue, forKey: key)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment