diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..9746ce4 Binary files /dev/null and b/.DS_Store differ diff --git a/Source/PermissionStatus.swift b/Source/PermissionStatus.swift index 8d3b4b9..0c75cc5 100644 --- a/Source/PermissionStatus.swift +++ b/Source/PermissionStatus.swift @@ -22,7 +22,7 @@ // SOFTWARE. // -public enum PermissionStatus: String { +public enum PermissionStatus: String, Codable { case authorized = "Authorized" case denied = "Denied" case disabled = "Disabled" diff --git a/Source/Supporting Files/Utilities.swift b/Source/Supporting Files/Utilities.swift index 6dc00e5..aa4fefb 100644 --- a/Source/Supporting Files/Utilities.swift +++ b/Source/Supporting Files/Utilities.swift @@ -49,7 +49,7 @@ extension UIControl.State: Hashable { } @propertyWrapper -struct UserDefault { +struct UserDefault { let key: String let defaultValue: T @@ -60,10 +60,17 @@ struct UserDefault { var wrappedValue: T { get { - return UserDefaults.standard.object(forKey: key) as? T ?? defaultValue + if let data = UserDefaults.standard.object(forKey: key) as? Data, + let user = try? JSONDecoder().decode(T.self, from: data) { + return user + + } + return defaultValue } set { - UserDefaults.standard.set(newValue, forKey: key) + if let encoded = try? JSONEncoder().encode(newValue) { + UserDefaults.standard.set(encoded, forKey: key) + } } } }