Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Swift : codable, encodable, decodable

В чем разница между Codable, Encodable и Decodable?

Вопрос проверяет понимание устройства протокола Codable и направления преобразования данных.

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

Encodable отвечает за кодирование модели в данные. Decodable — за создание модели из данных. Codable объединяет оба протокола. Можно использовать только один из них, если требуется одностороннее преобразование. Это дает гибкость при проектировании моделей.

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

Хотя чаще всего используют Codable, на самом деле он состоит из двух отдельных протоколов с разной ответственностью.

Encodable

Encodable используется, когда объект нужно превратить в данные.

Типичные сценарии:

  1. Отправка данных на сервер.

  2. Сохранение объекта в файл.

  3. Логирование состояния.

Пример:

struct CreateUserRequest: Encodable {
    let name: String
    let email: String
}

Здесь модель не предназначена для чтения из JSON, только для отправки.

Decodable

Decodable используется, когда объект создается из данных.

Типичные сценарии:

  1. Ответы сервера.

  2. Загрузка конфигураций.

  3. Чтение данных из хранилища.

Пример:

struct UserResponse: Decodable {
    let id: Int
    let name: String
}

Codable

Codable = Encodable & Decodable.

Используется, когда модель:

  1. Приходит с сервера.

  2. Может быть изменена.

  3. Отправляется обратно.

Пример:

struct User: Codable {
    let id: Int
    let name: String
}

Почему важно разделять

Перед выводом важно подчеркнуть практическую пользу:

  • модели становятся более точными по назначению;

  • уменьшается риск использовать модель не по сценарию;

  • API становится более выразительным.

Практический вывод

Если модель используется только для чтения или только для отправки — стоит ограничиться Decodable или Encodable. Codable удобно применять для универсальных моделей, участвующих в двухстороннем обмене данными.

  • Аватар

    iOS Guru

    Roman Isakov

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

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • Swift

    Swift

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

#codable

#encodable

#decodable

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

  • Аватар

    iOS Guru

    Roman Isakov

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