В Быстрых 4:
можно использовать Codable, чтобы сохранить и получить пользовательский объект от Userdefault. При выполнении его часто затем, можно добавить как расширение и использовать его как ниже.
extension UserDefaults {
func save<T:Encodable>(customObject object: T, inKey key: String) {
let encoder = JSONEncoder()
if let encoded = try? encoder.encode(object) {
self.set(encoded, forKey: key)
}
}
func retrieve<T:Decodable>(object type:T.Type, fromKey key: String) -> T? {
if let data = self.data(forKey: key) {
let decoder = JSONDecoder()
if let object = try? decoder.decode(type, from: data) {
return object
}else {
print("Couldnt decode object")
return nil
}
}else {
print("Couldnt find key")
return nil
}
}
}
Ваш Класс должен следовать за Codable. Его просто typealias для обоих Encodable & Протокол Decodable.
class UpdateProfile: Codable {
//Your stuffs
}
Использование:
let updateProfile = UpdateProfile()
//To save the object
UserDefaults.standard.save(customObject: updateProfile, inKey: "YourKey")
//To retrieve the saved object
let obj = UserDefaults.standard.retrieve(object: UpdateProfile.self, fromKey: "YourKey")
Для большего количества Кодирования и Декодирования Пользовательских типов, пройдите документация Apple .