Skip to content

Latest commit

 

History

History
43 lines (32 loc) · 1.14 KB

File metadata and controls

43 lines (32 loc) · 1.14 KB

UserDefaultsWrapper

A @propertyWrapper for type-safe UserDefaults access with default values, optionals, and custom suites.

API

Type Description
@UserDefault("key", defaultValue:) Non-optional property wrapper
@UserDefault("key") Optional property wrapper (returns nil if unset)
UserDefaultsStorable Protocol for supported types

Examples

import SwiftUtilsStorage

struct AppSettings {
    @UserDefault("has_completed_onboarding", defaultValue: false)
    static var hasCompletedOnboarding: Bool

    @UserDefault("username")
    static var username: String?

    @UserDefault("launch_count", defaultValue: 0)
    static var launchCount: Int

    // Custom suite for app groups
    @UserDefault("selected_theme", defaultValue: "light",
                 suite: UserDefaults(suiteName: "group.myapp")!)
    static var selectedTheme: String
}

// Read and write like normal properties
AppSettings.launchCount += 1
AppSettings.username = "Pawan"
AppSettings.hasCompletedOnboarding = true

// Optionals return nil when unset
if let name = AppSettings.username {
    print("Welcome back, \(name)")
}