DefaultsKit

Swift Versions

Platforms

Licence

DefaultsKit 是一个 Swift 包,它提供了一种简洁且类型安全的方式来管理 UserDefaults 键和值。它引入了用于键的可扩展协议,以及便捷的属性包装器,用于使用一致的前缀策略来存储、检索和管理偏好设置。

特性

安装

使用 Swift Package Manager 将 DefaultsKit 添加到您的 Swift 项目中。

dependencies: [
  .package(url: "https://github.com/markbattistella/DefaultsKit", from: "1.0.0")
]

用法

定义键

通过使您的枚举遵循 UserDefaultsKeyRepresentable 协议来定义键

enum UserDefaultsKey: String, UserDefaultsKeyRepresentable {
    case userPreference
    case appTheme
    case userProfile
}

使用 DefaultsPersisted

@DefaultsPersisted 属性包装器支持任何 Codable 类型

// For primitive types
@DefaultsPersisted(UserDefaultsKey.userPreference)
var isEnabled: Bool = false

// For custom types
@DefaultsPersisted(UserDefaultsKey.userProfile)
var profile: UserProfile = UserProfile(name: "John", age: 30)

// For optional values
@DefaultsPersisted(UserDefaultsKey.lastLoginDate)
var lastLogin: Date?

AppStorage 集成

将类型安全的键与 SwiftUI 的 @AppStorage 一起使用

struct ContentView: View {
    @AppStorage(UserDefaultsKey.userPreference)
    var isEnabled: Bool = false
    
    var body: some View {
        Toggle("Enable Feature", isOn: $isEnabled)
    }
}

直接访问 UserDefaults

使用扩展的 UserDefaults 方法

// Setting values
UserDefaults.standard.set(true, for: UserDefaultsKey.userPreference)

// Getting values
let preference = UserDefaults.standard.bool(for: UserDefaultsKey.userPreference)

// Encoding complex objects
try? UserDefaults.standard.encode(profile, for: UserDefaultsKey.userProfile)

// Decoding complex objects
let savedProfile: UserProfile? = try? UserDefaults.standard.decode(for: UserDefaultsKey.userProfile)

管理 Defaults

注册默认值

// Register defaults
UserDefaults.standard.register(
    defaults: [
        UserDefaultsKey.appTheme: "light",
        UserDefaultsKey.userPreference: true
    ]
)

辅助方法

// Print all values from the UserDefaultsKey enum
UserDefaults.printAllKeys(from: UserDefaultsKey.self)

// Delete all values in the UserDefaultsKey enum
UserDefaults.deleteAllKeys(from: UserDefaultsKey.self)

以这种方式使用它允许您隔离不同的 UserDefaultsKeyRepresentable 枚举,并打印或删除它们。

许可

DefaultsKit 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。