UserDefault+Ex.swift 647 B

123456789101112131415161718192021222324252627282930
  1. //
  2. // UserDefault+Ex.swift
  3. // TSLiveWallpaper
  4. //
  5. // Created by 100Years on 2024/12/30.
  6. //
  7. import Foundation
  8. @propertyWrapper
  9. public struct UserDefault<T> {
  10. public let key: String
  11. public let defaultValue: T
  12. public let storage: UserDefaults
  13. public init(key: String, defaultValue: T, storage: UserDefaults = .standard) {
  14. self.key = key
  15. self.defaultValue = defaultValue
  16. self.storage = storage
  17. }
  18. public var wrappedValue: T {
  19. get {
  20. return storage.object(forKey: key) as? T ?? defaultValue
  21. }
  22. set {
  23. storage.set(newValue, forKey: key)
  24. }
  25. }
  26. }