Приведи пример использования класса `URLSession` из стандартной библиотеки Swift.

«Приведи пример использования класса `URLSession` из стандартной библиотеки Swift.» — вопрос из категории Swift Core, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

URLSession — это основной класс для выполнения сетевых HTTP/HTTPS-запросов в iOS/macOS.

Пример простого GET-запроса:

// 1. Определяем URL
let url = URL(string: "https://api.github.com/users/apple")!

// 2. Создаем и запускаем задачу (dataTask) на shared сессии
let task = URLSession.shared.dataTask(with: url) { data, response, error in
    // 3. Обрабатываем ответ в completion handler (выполняется в фоновом потоке)

    // Проверяем на ошибку сети
    if let error = error {
        print("Network error: (error.localizedDescription)")
        return
    }

    // Проверяем HTTP статус-код
    guard let httpResponse = response as? HTTPURLResponse,
          (200...299).contains(httpResponse.statusCode) else {
        print("Server returned an error")
        return
    }

    // Парсим полученные данные (JSON)
    guard let data = data else { return }

    do {
        let json = try JSONSerialization.jsonObject(with: data, options: [])
        print("Successfully received JSON: (json)")
    } catch {
        print("JSON parsing error: (error)")
    }
}
task.resume() // 4. Не забываем запустить задачу

Ключевые моменты:

  • URLSession.shared — синглтон для простых запросов. Для кастомных настроек (таймауты, кеширование) создают экземпляр URLSession(configuration:).
  • Асинхронность: Запрос не блокирует главный поток.
  • Типы задач: Помимо dataTask, существуют downloadTask (для файлов) и uploadTask.