Skip to content

Instantly share code, notes, and snippets.

@kuotinyen
Last active December 21, 2018 09:48
Show Gist options
  • Save kuotinyen/720d727b1b6b3cba2b314a31e191bad9 to your computer and use it in GitHub Desktop.
Save kuotinyen/720d727b1b6b3cba2b314a31e191bad9 to your computer and use it in GitHub Desktop.
Add custom userDefaults key using enum.

Usage

DB[.fcmToken] = fcmToken

guard let fcmToken = DB[.fcmToken] as? String 
else { return "" }

Extension

var DB: UserDefaults {
    get {
        return UserDefaults.standard
    }
}

extension UserDefaults {
    subscript(key: String) -> Any? {
        get {
            return object(forKey: key)
        }

        set {
            set(newValue, forKey: key)
        }
    }

    subscript(key: keys) -> Any? {
        get {
            return object(forKey: key.rawValue)
        }

        set {
            set(newValue, forKey: key.rawValue)
        }
    }
}

extension UserDefaults {
    enum keys: String {
        case fcmToken
    }

    static func set(_ value: Any, forKey key: keys) {
        let key = key.rawValue
        DB.set(value, forKey: key)
    }

    static func object(forKey key: keys) -> Any? {
        let key = key.rawValue
        return DB.object(forKey: key)
    }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment