Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
RxSwift Basics
Search
Gabriel Oliva
September 26, 2017
Programming
56
0
Share
RxSwift Basics
Gabriel Oliva
September 26, 2017
More Decks by Gabriel Oliva
See All by Gabriel Oliva
TDC - Acessibilidade no iOS
gabrieloliva
0
62
Acessibilidade no iOS
gabrieloliva
0
140
Abordando TDD no iOS
gabrieloliva
0
44
Other Decks in Programming
See All in Programming
From Formal Specification to Property Based Test
ohbarye
0
1.2k
Road to RubyKaigi: Play Hard(ware)
makicamel
1
550
【26新卒研修資料】TDD実装演習
dip_tech
PRO
0
170
2026-04-15 Spring IO - I Can See Clearly Now
jonatan_ivanov
1
190
書き換えて学ぶTemporal #fukts
pirosikick
2
360
Explore CoroutineScope
tomoeng11
0
170
Cache-moi si tu peux : patterns et pièges du cache en production - Devoxx France 2026 - Conférence
slecache
0
340
Terraform言語の静的解析 / static analysis of Terraform language
wata727
1
140
空間オーディオの活用
objectiveaudio
0
140
クラウドネイティブなエンジニアに向ける Raycastの魅力と実際の活用事例
nealle
2
250
Back to the roots of date
jinroq
0
740
AlarmKitで明後日起きれるアラームアプリを作る
trickart
0
120
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4k
Bash Introduction
62gerente
615
210k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
510
The Mindset for Success: Future Career Progression
greggifford
PRO
0
330
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.6k
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.4k
What's in a price? How to price your products and services
michaelherold
247
13k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.8k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.4k
Are puppies a ranking factor?
jonoalderson
1
3.4k
Transcript
RxSwift Basics
Gabriel Oliva • ! iOS Developer @ AppProva • "
Batera; • # Mineiro que: • ☕ = % • & = ' • Co-organizador do CocoaHeads BH
[email protected]
@gabrieloliva_
Agenda • Programação Reativa • Teoria • O que é
RxSwift? • Observables • Operadores • Efeitos colaterais • Pratica
Programação Reativa • Paradigma orientado por: • fluxo de dados
• propagação de mudanças
Programação Reativa Isso significa que é possível expressar fluxo de
dados estáticos ou dinâmicos e propagar suas mudanças através de seus subfluxos
O que é RxSwift? • API multiplataforma chamada Rx •
Extensões Reativas • Sequencia de eventos • Composables operators • Programação assíncrona
Código assíncrono
Observable A classe Observable representa todas as mudanças dos nossos
dados como uma sequencia de eventos ao longo do tempo.
Observable Essa sequencia pode ser observada de algum lugar do
seu código, então não apenas você tem acesso ao seu dado, mas você tem acesso aos eventos de mudanças do seu dado.
Observable Você não precisa ser proativo para saber se seu
dado foi alterado. O próprio dado te diz quando ele muda e você só precisa reagir à essas mudanças
Observable<Int>
Subjects Subjects é uma "forma especial" de Observable que podemos
nos inscrever e adicionar elementos dinamicamente.
Operadores Observable<UIInterfaceOrientation> Outputs public enum UIInterfaceOrientation : Int { case
unknown case portrait case portraitUpsideDown case landscapeLeft case landscapeRight }
Operadores: filter
Efeitos colaterais Quando nos inscrevemos à um Observable, ele ao
longo do tempo vai emitir notificações com os novos valores.
None
Efeitos colaterais Para reagir à essas mudanças, utilizamos o operador
doOn. • do(onNext:) - quando você quer fazer algo assim que o evento aconteceu. • do(onError:) - quando um erro é emitido. • do(onCompleted:) - se a sequência foi finalizada.
Resumindo • Tenho um elemento que emite eventos • Em
algum lugar do meu código eu me inscrevo para receber notificações sobre esses eventos • A partir dessas notificações, eu faço algo
Prática let names = Variable([String]) names = ["João", "Maria", "Joana"]
Prática names.asObservable() .subscribe(onNext: { value in print(value) }) log: ["João",
"Maria", "Joana"]
Prática names.asObservable() .map { value in return "Participantes CocoaHeads: \(value)"
} .subscribe(onNext: { value in print(value) }) log: "Participantes CocoaHeads: ["João", "Maria", "Joana"]"
Prática names.asObservable() .throttle(0.5, scheduler: MainScheduler.instance) .map { value in return
"Participantes CocoaHeads: \(value)" } .subscribe(onNext: { value in print(value) }) names = ["João", "Maria", "Joana"] names = ["João"] log: "Participantes CocoaHeads: ["João"]"
DEMO
Pra onde ir a partir daqui? • Networking • Padrões
de delegação • MVVM
Perguntas?