AppStorageValues.swift 677 B

123456789101112131415161718
  1. /// A container for typed application-defined app storage values
  2. public struct AppStorageValues {
  3. private let provider: AppStorageProvider?
  4. /// Only to be used by AppStorage
  5. internal init(provider: AppStorageProvider?) {
  6. self.provider = provider
  7. }
  8. public func getValue<T: Codable & Sendable>(_ key: any AppStorageKey<T>.Type) -> T {
  9. guard let provider else { return key.defaultValue }
  10. return provider.getValue(key: key.name, defaultValue: key.defaultValue)
  11. }
  12. public func setValue<T: Codable & Sendable>(_ key: any AppStorageKey<T>.Type, newValue: T) {
  13. provider?.setValue(key: key.name, newValue: newValue)
  14. }
  15. }