Swift Academy · Lección

Redes con Combine y URLSession

Utilice URLSession.dataTaskPublisher con Combine para gestionar respuestas de red.

Lección 4 de 412 pasos

Redes con Combine y URLSession es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Swift Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Swift Academy incluye 4 lecciones en total.

Bienvenido

URLSession ofrece compatibilidad integrada con Combine mediante `dataTaskPublisher`. Combinado con `decode`, permite crear pipelines de red con seguridad de tipos en solo unas pocas líneas.

dataTaskPublisher

```swift URLSession.shared .dataTaskPublisher(for: URL(string:"https://api.example.com/users")!) .sink(receiveCompletion: { print($0) }, receiveValue: { data, response in print(data.count) }) .store(in: &cancellables) ```

Decodificación de JSON

```swift struct User: Decodable { var name: String; var id: Int } URLSession.shared .dataTaskPublisher(for: url) .map(\.data) .decode(type: [User].self, decoder: JSONDecoder()) .receive(on: DispatchQueue.main) .sink(receiveCompletion: { print($0) }, receiveValue: { users in self.users = users }) .store(in: &cancellables) ```

Gestión de errores con catch

```swift .catch { error -> AnyPublisher<[User],Never> in print("Error: \(error)") return Just([]).eraseToAnyPublisher() } ```

retry

```swift .retry(3) // retry up to 3 times on failure ```

Validación del estado HTTP

```swift .tryMap { data, response -> Data in guard let http = response as? HTTPURLResponse, (200...299).contains(http.statusCode) else { throw URLError(.badServerResponse) } return data } ```

Creación de un Publisher genérico

```swift func fetch(_ url: URL) -> AnyPublisher { URLSession.shared.dataTaskPublisher(for: url) .map(\.data) .decode(type: T.self, decoder: JSONDecoder()) .eraseToAnyPublisher() } ```

Cancelación

```swift var searchCancellable: AnyCancellable? searchCancellable?.cancel() // cancel previous searchCancellable = fetch(url).sink { ... } ```

flatMap para solicitudes secuenciales

```swift fetch(userUrl) .flatMap { user in fetch(user.profileUrl) } .sink { profile in render(profile) } .store(in: &cancellables) ```

Combinación de varias solicitudes

```swift Publishers.Zip(fetch(url1), fetch(url2)) .sink { a, b in combinedUI(a, b) } .store(in: &cancellables) ```

Comprobación rápida

¿Qué operador de Combine decodifica la salida de un Publisher en un tipo Decodable?

Resumen

Puntos clave: • `dataTaskPublisher(for:)`: recuperación de URL basada en Combine • `.map(\.data)` → `.decode(type:decoder:)` para JSON • `.tryMap` valida el estado HTTP • `.retry(n)` permite reintentos automáticos • `.catch { }` proporciona un Publisher alternativo ¡Curso completado! Siguiente: concurrencia estructurada de Swift.
Gratis para empezar

Aprende Swift con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
122
Lecciones
409

Preguntas frecuentes

¿La lección «Redes con Combine y URLSession» es gratis?

Sí — el texto completo de «Redes con Combine y URLSession» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Swift Academy, actualiza a CoddyKit PRO. El curso de Swift Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Redes con Combine y URLSession»?

Utilice URLSession.dataTaskPublisher con Combine para gestionar respuestas de red. Practicas Swift Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Swift Academy?

No se requiere experiencia previa. Swift Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Redes con Combine y URLSession»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Swift Academy?

Sí. Cada lección de Swift Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Publishers y Subscribers
  2. Operadores: map, filter, combineLatest
  3. PassthroughSubject y CurrentValueSubject
  4. Redes con Combine y URLSession
← Volver a Swift Academy