diff --git a/Sources/ExtensionKit/Foundation/UserDefaults.swift b/Sources/ExtensionKit/Foundation/UserDefaults.swift new file mode 100644 index 0000000..38cb8bd --- /dev/null +++ b/Sources/ExtensionKit/Foundation/UserDefaults.swift @@ -0,0 +1,25 @@ +import Foundation + +public extension UserDefaults { + + /// Get `Codable` model from user defaults + /// - Parameter key: String key + /// - Returns: Model + func getCodable(forKey key: String) -> T? { + guard let data = UserDefaults.standard.data(forKey: key) else { + return nil + } + let element = try? JSONDecoder().decode(T.self, from: data) + return element + } + + /// Set `Codable` mode to user defaults + /// - Parameters: + /// - value: Model + /// - key: String key + func setCodable(value: T, forKey key: String) { + let data = try? JSONEncoder().encode(value) + UserDefaults.standard.setValue(data, forKey: key) + } + +}