[+] Encapsulate UserDefaults subscript
This commit is contained in:
@@ -170,4 +170,24 @@ extension String
|
||||
}
|
||||
|
||||
/// More convenient ui update closure
|
||||
func ui(closure: () -> Void) { DispatchQueue.main.async { closure() } }
|
||||
func ui(closure: @escaping () -> Void) { DispatchQueue.main.async { closure() } }
|
||||
|
||||
/// More convenient UserDefaults access (Credit: https://gist.github.com/Otbivnoe/04b8bd7984fba0cb58ca7f136fd95582)
|
||||
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 { self[key] = newValue?.rawValue }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user