sindresorhus/defaults
> Swifty and modern [UserDefaults](https://developer.apple.com/documentation/foundation/userdefaults)
Highlights
- Strongly typed: You declare the type and default value upfront.
- SwiftUI: Property wrapper that updates the view when the
UserDefaultsvalue changes. - Codable support: You can store any Codable value, like an enum.
- NSSecureCoding support: You can store any NSSecureCoding value.
- Observation: Observe changes to keys.
- Debuggable: The data is stored as JSON-serialized values.
- Customizable: You can serialize and deserialize your own type in your own way.
- iCloud support: Automatically synchronize data between devices.
Benefits over `@AppStorage`
- You define strongly-typed identifiers in a single place and can use them everywhere.
- You also define the default values in a single place instead of having to remember what default value you used in other places.
- You can use it outside of SwiftUI.
- You can observe value updates.
- Supports many more types, even
Codable. - Easy to add support for your own custom types.
- Comes with a convenience SwiftUI
Togglecomponent.
Compatibility
- macOS 11+
- iOS 14+
- tvOS 14+
- watchOS 9+
- visionOS 1+
Install
Add https://github.com/sindresorhus/Defaults in the “Swift Package Manager” tab in Xcode.
Documentation
Usage
import Defaults
extension Defaults.Keys {
static let quality = Key<Double>("quality", default: 0.8)
}
Defaults[.quality]
//=> 0.8
Defaults[.quality] = 0.5
//=> 0.5You can also use it in SwiftUI:
struct ContentView: View {
@Default(.quality) var quality
var body: some View {
Slider(value: $quality, in: 0...1)
}
}Maintainers
Package Metadata
Repository: sindresorhus/defaults
Default branch: main
README: readme.md