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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Gabriel Oliva
September 26, 2017
Programming
60
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
RxSwift Basics
Gabriel Oliva
September 26, 2017
More Decks by Gabriel Oliva
See All by Gabriel Oliva
TDC - Acessibilidade no iOS
gabrieloliva
0
63
Acessibilidade no iOS
gabrieloliva
0
140
Abordando TDD no iOS
gabrieloliva
0
44
Other Decks in Programming
See All in Programming
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
210
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
260
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
560
キャリア迷子上等 ─ "ない道"は自分で作ればいい
16bitidol
3
2.2k
エージェンティックRAGにAWSで入門しよう!
har1101
9
1.7k
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
290
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
7.4k
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
180
その問い、本当に正しいですか?AI時代のエンジニアに必要な哲学と認知科学 / ai-philosophy-cognitive-science
minodriven
11
6.1k
さぁV100、メモリをお食べ・・・
nilpe
0
150
トークンをケチるな、設計しろ:GitHub Copilotを賢く使うコンテキスト戦略
ochtum
0
130
ふつうのFeature Flag実践入門
irof
8
4.1k
Featured
See All Featured
Producing Creativity
orderedlist
PRO
348
40k
Scaling GitHub
holman
464
140k
The untapped power of vector embeddings
frankvandijk
2
1.8k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
330
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
230
Into the Great Unknown - MozCon
thekraken
41
2.6k
The Curious Case for Waylosing
cassininazir
1
400
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
The Spectacular Lies of Maps
axbom
PRO
1
820
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
310
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?