RxSwift pour Swift : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Qu'est-ce que RxSwift et pourquoi en a-t-on besoin ?

\n\n

RxSwift est l'implémentation officielle de ReactiveX (Reactive Extensions) pour le langage Swift. ReactiveX est une bibliothèque de programmation asynchrone et de manipulation de flux de données utilisant des séquences observables (Observable) et des opérateurs (Operators). RxSwift permet d'écrire un code propre, déclaratif et facile à lire pour le traitement d'événements, les opérations asynchrones (requêtes réseau, interaction avec l'interface utilisateur, minuteries) et la gestion de l'état de l'application.

\n\n

Pourquoi utiliser RxSwift ?

\n
    \n
  • Simplification du code asynchrone : Au lieu de fermetures imbriquées (callback hell) et de délégués, RxSwift propose une interface unique pour travailler avec n'importe quelle source de données asynchrone.
  • \n
  • Déclarativité : Vous décrivez ce qui doit arriver aux données, et non comment le réaliser. Le code devient plus prévisible.
  • \n
  • Gestion des threads (Threading) : Il est facile de basculer entre les threads d'arrière-plan et le thread principal à l'aide des opérateurs observeOn et subscribeOn.
  • \n
  • Composition : Vous pouvez combiner, filtrer, transformer et fusionner plusieurs flux de données en un seul.
  • \n
  • Gestion de la mémoire : Des mécanismes intégrés (DisposeBag) désabonnent automatiquement les souscriptions lors de la destruction des objets, évitant ainsi les fuites de mémoire.
  • \n
\n\n

RxSwift n'est pas seulement une bibliothèque, c'est un paradigme de programmation particulièrement utile dans les applications iOS complexes avec de nombreuses interactions et états.

\n\n

Installation de RxSwift

\n\n

RxSwift s'installe via CocoaPods ou Swift Package Manager (SPM). L'installation via pip ou npm n'est pas applicable, car il s'agit d'une bibliothèque native pour l'écosystème Apple.

\n\n

Installation via CocoaPods

\n

Ajoutez à votre Podfile :

\n
platform :ios, '13.0'\nuse_frameworks!\n\ntarget 'YourAppTarget' do\n  pod 'RxSwift', '~> 6.0'\n  pod 'RxCocoa', '~> 6.0'  # Pour l'intégration avec UIKit/AppKit\nend
\n

Exécutez ensuite la commande dans le terminal :

\n
pod install
\n\n

Installation via Swift Package Manager (SPM)

\n

Dans Xcode : File → Add Packages... et collez l'URL du dépôt :

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

Choisissez la version souhaitée (par exemple, 6.5.0) et ajoutez les paquets RxSwift et RxCocoa à votre cible.

\n\n

Démarrage rapide avec un exemple de code

\n\n

Créez un Observable simple qui émet les nombres de 1 à 5, et abonnez-vous-y :

\n\n
import RxSwift\n\nlet disposeBag = DisposeBag()\n\n// 1. Création d'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. Abonnement\nobservable\n    .subscribe(\n        onNext: { value in\n            print("Valeur reçue : \\(value)")\n        },\n        onError: { error in\n            print("Erreur : \\(error.localizedDescription)")\n        },\n        onCompleted: {\n            print("Séquence terminée")\n        },\n        onDisposed: {\n            print("Souscription détruite")\n        }\n    )\n    .disposed(by: disposeBag)\n\n// Sortie :\n// Valeur reçue : 1\n// Valeur reçue : 2\n// Valeur reçue : 3\n// Valeur reçue : 4\n// Valeur reçue : 5\n// Séquence terminée\n// Souscription détruite
\n\n

Explication :

\n
    \n
  • Observable.create — crée une séquence personnalisée.
  • \n
  • observer.onNext — émet une nouvelle valeur.
  • \n
  • observer.onCompleted — signale la fin de la séquence.
  • \n
  • s

Recommendations