Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
extension UserDefaults {
subscript<T>(key: String) -> T? {
get {
return value(forKey: key) as? T
}
set {
set(newValue, forKey: key)
}
}
subscript<T: RawRepresentable>(key: String) -> T? {
get {
if let rawValue = value(forKey: key) as? T.RawValue {
return T(rawValue: rawValue)
}
return nil
}
set {
set(newValue?.rawValue, forKey: key)
}
}
}
@FlixMa

This comment has been minimized.

Copy link

@FlixMa FlixMa commented Apr 16, 2018

You can actually make it even less redundant:

Replace (line 19):
set(newValue?.rawValue, forKey: key)
with:
self[key] = newValue?.rawValue

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment