Что такое Associated Value в Swift?

«Что такое Associated Value в Swift?» — вопрос из категории Swift Core, который задают на 22% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Associated Value (связанное значение) — это механизм в Swift, позволяющий прикреплять дополнительные данные к конкретному кейсу (case) перечисления (enum). Каждый кейс может хранить значения разных типов и в разном количестве, что делает перечисления гибкими структурами данных, похожими на union в других языках.

Пример объявления и использования:

enum NetworkResponse {
    case success(data: Data, statusCode: Int)
    case failure(error: Error, retryCount: Int)
}

// Создание экземпляра со связанными значениями
let response = NetworkResponse.success(data: someData, statusCode: 200)

// Извлечение значений через pattern matching
switch response {
case .success(let data, let code):
    print("Данные: (data), Код: (code)")
case .failure(let error, let retries):
    print("Ошибка: (error), Попыток осталось: (retries)")
}

Ключевые особенности:

  • Значения привязаны к конкретному экземпляру кейса.
  • Для доступа к ним используется сопоставление с образцом (switch, if case let).
  • Позволяет создавать типобезопасные контейнеры для разнородных данных.