Junior — Middle
Como garantir a preservação de um objeto de classe no UserDefaults?
sobes.tech IA
Resposta da IA
Para guardar um objeto de classe no UserDefaults no iOS, é necessário converter o objeto para um formato que o UserDefaults possa armazenar, como Data. Normalmente, a classe deve conformar-se ao protocolo Codable (ou NSCoding para uma abordagem mais antiga). Depois, o objeto é codificado em Data usando JSONEncoder ou PropertyListEncoder e guardado no UserDefaults. Ao ler, os dados são decodificados de volta para um objeto.
Exemplo com Codable:
class User: Codable {
var name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
}
// Guardar
let user = User(name: "Иван", age: 30)
if let encoded = try? JSONEncoder().encode(user) {
UserDefaults.standard.set(encoded, forKey: "savedUser")
}
// Carregar
if let savedUserData = UserDefaults.standard.data(forKey: "savedUser"),
let savedUser = try? JSONDecoder().decode(User.self, from: savedUserData) {
print(savedUser.name) // Иван
}
Dessa forma, o UserDefaults armazena dados serializados, não o objeto em si.