Назад к вопросам
Okko
Junior — Middle
76
Каким образом можно обеспечить сохранение объекта класса в UserDefaults?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Для сохранения объекта класса в UserDefaults в iOS необходимо преобразовать объект в формат, который UserDefaults может хранить, например, в Data. Обычно для этого класс должен соответствовать протоколу Codable (или NSCoding для старого подхода). Затем объект кодируется в Data с помощью JSONEncoder или PropertyListEncoder и сохраняется в UserDefaults. При чтении данные декодируются обратно в объект.
Пример с Codable:
class User: Codable {
var name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
}
// Сохранение
let user = User(name: "Иван", age: 30)
if let encoded = try? JSONEncoder().encode(user) {
UserDefaults.standard.set(encoded, forKey: "savedUser")
}
// Загрузка
if let savedUserData = UserDefaults.standard.data(forKey: "savedUser"),
let savedUser = try? JSONDecoder().decode(User.self, from: savedUserData) {
print(savedUser.name) // Иван
}
Таким образом, UserDefaults хранит сериализованные данные, а не сам объект напрямую.