RxSwift para Swift: guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

O que é RxSwift e para que serve?

\n\n

RxSwift é a implementação oficial do ReactiveX (Reactive Extensions) para a linguagem Swift. ReactiveX é uma biblioteca para programação assíncrona e manipulação de fluxos de dados usando sequências observáveis (Observable) e operadores (Operators). RxSwift permite escrever código limpo, declarativo e facilmente legível para processar eventos, operações assíncronas (requisições de rede, interação com UI, timers) e gerenciamento de estado da aplicação.

\n\n

Para que serve o RxSwift?

\n
    \n
  • Simplificação do código assíncrono: Em vez de closures aninhadas (callback hell) e delegates, o RxSwift oferece uma interface unificada para trabalhar com qualquer fonte de dados assíncrona.
  • \n
  • Declaratividade: Você descreve o que deve acontecer com os dados, não como implementar. O código se torna mais previsível.
  • \n
  • Gerenciamento de threads (Threading): É fácil alternar entre threads de fundo e a thread principal usando os operadores observeOn e subscribeOn.
  • \n
  • Composição: Você pode combinar, filtrar, transformar e unir vários fluxos de dados em um único.
  • \n
  • Gerenciamento de memória: Mecanismos embutidos (DisposeBag) cancelam automaticamente as assinaturas quando os objetos são destruídos, prevenindo vazamentos de memória.
  • \n
\n\n

RxSwift não é apenas uma biblioteca, é um paradigma de programação que é especialmente útil em aplicativos iOS complexos com múltiplas interações e estados.

\n\n

Instalação do RxSwift

\n\n

O RxSwift é instalado via CocoaPods ou Swift Package Manager (SPM). A instalação via pip ou npm não se aplica, pois é uma biblioteca nativa do ecossistema Apple.

\n\n

Instalação via CocoaPods

\n

Adicione ao seu Podfile:

\n
platform :ios, '13.0'\nuse_frameworks!\n\ntarget 'YourAppTarget' do\n  pod 'RxSwift', '~> 6.0'\n  pod 'RxCocoa', '~> 6.0'  # Para integração com UIKit/AppKit\nend
\n

Em seguida, execute o comando no terminal:

\n
pod install
\n\n

Instalação via Swift Package Manager (SPM)

\n

No Xcode: File → Add Packages... e cole a URL do repositório:

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

Selecione a versão desejada (por exemplo, 6.5.0) e adicione os pacotes RxSwift e RxCocoa ao seu target.

\n\n

Início rápido com exemplo de código

\n\n

Crie um Observable simples que emite números de 1 a 5 e inscreva-se nele:

\n\n
import RxSwift\n\nlet disposeBag = DisposeBag()\n\n// 1. Criando um 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. Inscrevendo-se\nobservable\n    .subscribe(\n        onNext: { value in\n            print("Valor recebido: \\(value)")\n        },\n        onError: { error in\n            print("Erro: \\(error.localizedDescription)")\n        },\n        onCompleted: {\n            print("Sequência concluída")\n        },\n        onDisposed: {\n            print("Assinatura descartada")\n        }\n    )\n    .disposed(by: disposeBag)\n\n// Saída:\n// Valor recebido: 1\n// Valor recebido: 2\n// Valor recebido: 3\n// Valor recebido: 4\n// Valor recebido: 5\n// Sequência concluída\n// Assinatura descartada
\n\n

Explicação:

\n
    \n
  • Observable.create — cria uma sequência personalizada.
  • \n
  • observer.onNext — emite um novo valor.
  • \n
  • observer.onCompleted — sinaliza o fim da sequência.
  • \n
  • s

Recommendations