DefaultsKit
是一个 Swift 包,它提供了一种简洁且类型安全的方式来管理 UserDefaults
键和值。它引入了用于键的可扩展协议,以及便捷的属性包装器,用于使用一致的前缀策略来存储、检索和管理偏好设置。
UserDefaults
键: 使用遵循 UserDefaultsKeyRepresentable
协议的枚举来定义键,并自动处理前缀。@DefaultsPersisted
:一个强大的属性包装器,适用于任何 Codable
类型,内置支持基本类型和可选类型@AppStorage:
增强的 SwiftUI 集成,为常用类型提供类型安全的键UserDefaultsKeyRepresentable
协议自定义前缀。UserDefaults
条目的方法Codable
支持: 为复杂类型自动编码/解码使用 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
属性包装器支持任何 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?
将类型安全的键与 SwiftUI 的 @AppStorage
一起使用
struct ContentView: View {
@AppStorage(UserDefaultsKey.userPreference)
var isEnabled: Bool = false
var body: some View {
Toggle("Enable Feature", isOn: $isEnabled)
}
}
使用扩展的 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)
// 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 文件。