Sobes.tech
Назад к вопросам
Junior — Middle
76

Каким образом можно обеспечить сохранение объекта класса в UserDefaults?

Компании, где спрашивали
OkkoOkko

Ответ от нейросети

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 хранит сериализованные данные, а не сам объект напрямую.