RxSwift para Swift: guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

¿Qué es RxSwift y para qué sirve?

\n\n

RxSwift es la implementación oficial de ReactiveX (Reactive Extensions) para el lenguaje Swift. ReactiveX es una biblioteca para programación asíncrona y manipulación de flujos de datos utilizando secuencias observables (Observable) y operadores (Operators). RxSwift permite escribir código limpio, declarativo y fácil de leer para manejar eventos, operaciones asíncronas (solicitudes de red, interacción con la UI, temporizadores) y la gestión del estado de la aplicación.

\n\n

¿Para qué sirve RxSwift?

\n
    \n
  • Simplificación del código asíncrono: En lugar de closures anidados (callback hell) y delegados, RxSwift ofrece una interfaz unificada para trabajar con cualquier fuente de datos asíncrona.
  • \n
  • Declaratividad: Describes qué debe suceder con los datos, no cómo implementarlo. El código se vuelve más predecible.
  • \n
  • Gestión de hilos (Threading): Cambia fácilmente entre hilos en segundo plano y el hilo principal usando los operadores observeOn y subscribeOn.
  • \n
  • Composición: Puedes combinar, filtrar, transformar y unir múltiples flujos de datos en uno solo.
  • \n
  • Gestión de memoria: Los mecanismos integrados (DisposeBag) cancelan automáticamente las suscripciones cuando los objetos se destruyen, evitando fugas de memoria.
  • \n
\n\n

RxSwift no es solo una biblioteca, es un paradigma de programación que es especialmente útil en aplicaciones iOS complejas con múltiples interacciones y estados.

\n\n

Instalación de RxSwift

\n\n

RxSwift se instala a través de CocoaPods o Swift Package Manager (SPM). La instalación a través de pip o npm no es aplicable, ya que es una biblioteca nativa para el ecosistema de Apple.

\n\n

Instalación mediante CocoaPods

\n

Añade a tu Podfile:

\n
platform :ios, '13.0'\nuse_frameworks!\n\ntarget 'YourAppTarget' do\n  pod 'RxSwift', '~> 6.0'\n  pod 'RxCocoa', '~> 6.0'  # Para integración con UIKit/AppKit\nend
\n

Luego ejecuta el comando en la terminal:

\n
pod install
\n\n

Instalación mediante Swift Package Manager (SPM)

\n

En Xcode: File → Add Packages... e inserta la URL del repositorio:

\n
https://github.com/ReactiveX/RxSwift.git
\n

Selecciona la versión deseada (por ejemplo, 6.5.0) y añade los paquetes RxSwift y RxCocoa a tu target.

\n\n

Inicio rápido con un ejemplo de código

\n\n

Crea un Observable simple que emita números del 1 al 5, y suscríbete a él:

\n\n
import RxSwift\n\nlet disposeBag = DisposeBag()\n\n// 1. Creamos un Observable\nlet observable = Observable<Int>.create { observer in\n    observer.onNext(1)\n    observer.onNext(2)\n    observer.onNext(3)\n    observer.onNext(4)\n    observer.onNext(5)\n    observer.onCompleted()\n    return Disposables.create()\n}\n\n// 2. Nos suscribimos\nobservable\n    .subscribe(\n        onNext: { value in\n            print("Valor recibido: \\(value)")\n        },\n        onError: { error in\n            print("Error: \\(error.localizedDescription)")\n        },\n        onCompleted: {\n            print("Secuencia completada")\n        },\n        onDisposed: {\n            print("Suscripción eliminada")\n        }\n    )\n    .disposed(by: disposeBag)\n\n// Salida:\n// Valor recibido: 1\n// Valor recibido: 2\n// Valor recibido: 3\n// Valor recibido: 4\n// Valor recibido: 5\n// Secuencia completada\n// Suscripción eliminada
\n\n

Explicación:

\n
    \n
  • Observable.create — crea una secuencia personalizada.
  • \n
  • observer.onNext — emite un nuevo valor.
  • \n
  • observer.onCompleted — señala la finalización de la secuencia.
  • \n
  • s

Recommendations