Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Swift : persistence, serialization

Как можно сохранять и читать структуру данных?

Вопрос проверяет знание процесса преобразования объектов в памяти в формат для хранения и обратного восстановления.

Короткий ответ

Структуру данных можно сохранить и прочитать с помощью процесса сериализации (кодирования) и десериализации (декодирования). В Swift для этого используют протокол Codable. Объект, подписанный под Codable, можно преобразовать в данные (например, JSON) с помощью JSONEncoder, а эти данные сохранить в файл через FileManager или в UserDefaults. Для чтения данные извлекаются и декодируются обратно в объект с помощью JSONDecoder.

Длинный ответ

Сериализация — это процесс преобразования объекта в поток байтов (данные). Десериализация — обратный процесс.

Основные шаги для структур, подписанных под Codable:

  1. Определение модели:

    struct User: Codable {
        let name: String
        let age: Int
    }
  2. Кодирование (Сохранение):

    let user = User(name: "Alice", age: 30)
    let encoder = JSONEncoder()
    encoder.outputFormatting = .prettyPrinted // Для читаемости (опционально)
    
    do {
        // Преобразуем структуру в Data (бинарные данные JSON)
        let userData = try encoder.encode(user)
        // Сохраняем данные в UserDefaults
        UserDefaults.standard.set(userData, forKey: "savedUser")
        // Или сохраняем в файл с помощью FileManager
        let url = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0].appendingPathComponent("user.json")
        try userData.write(to: url)
    } catch {
        print("Ошибка кодирования: \(error)")
    }
  3. Декодирование (Чтение):

    // Чтение из UserDefaults
    if let savedData = UserDefaults.standard.data(forKey: "savedUser") {
        let decoder = JSONDecoder()
        do {
            let loadedUser = try decoder.decode(User.self, from: savedData)
            print(loadedUser.name) // Alice
        } catch {
            print("Ошибка декодирования: \(error)")
        }
    }
  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    8

Навыки

  • Swift

    Swift

Ключевые слова

#persistence

#serialization

Подпишись на iOS Developer в телеграм

  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.