sunshinejr / SwiftyUserDefaults

Modern Swift API for NSUserDefaults
http://radex.io/swift/nsuserdefaults/static
MIT License
4.85k stars 365 forks source link

Property wrappers! #207

Closed sunshinejr closed 4 years ago

sunshinejr commented 4 years ago

What I want to achieve:

extension DefaultsKeys {
    var userColorScheme: DefaultsKey<String> { .init("userColorScheme", defaultValue: "default") }
    var userThemeName: DefaultsKey<String?> { .init("userThemeName") }
    var userLastLoginDate: DefaultsKey<Date?> { .init("userLastLoginDate") }
}

struct Settings {

    @SwiftyUserDefault(keyPath: \.userColorScheme)
    var userColorScheme: String

    @SwiftyUserDefault(keyPath: \.userThemeName, options: .cached)
    var userThemeName: String?

    @SwiftyUserDefault(keyPath: \.userLastLoginDate, options: [.cached, .observed])
    var userLastLoginDate: Date?
}

let's see if it's gonna work 😄

sunshinejr-bot commented 4 years ago
Warnings
:warning: Big PR, try to keep changes smaller if you can
:warning: Any changes to library code should be reflected in the Changelog.
:warning: PR is classed as Work in Progress

Generated by :no_entry_sign: Danger Swift against c52bea390ba3806a7abe8a59db028dd9d3f8af1f

sunshinejr commented 4 years ago

Alright it works!!! 🚀