Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
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
68
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
74
Acessibilidade no iOS
gabrieloliva
0
150
Abordando TDD no iOS
gabrieloliva
0
50
Other Decks in Programming
See All in Programming
What We Talk About When We Talk About XP
m_seki
2
660
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
270
Family mrubyの進捗
kishima
1
130
wkhtmltopdfの次どうするか問題2026
willnet
2
1.6k
スマートフォンでモールス信号を送受信する 〜スマートフォンのLEDとカメラで作る光通信の設計と実装〜
atsuki_seo
0
160
Kiroで創り、AgentCoreで繋ぐ!AWSで実践する「AI-DLC」から「AIエージェント統合」までの最新地図
licux
4
730
AHC070解法紹介
eijirou
0
130
Webの地図
yosuke_furukawa
PRO
6
4.7k
Building an Out-of-Order CPU
latte72
1
790
Vibes Containers 〜AIで変わるコンテナ設計と運用〜
tkikuc
3
550
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
8
4.5k
AI に Inclusive UI を書かせよう — Design Rules Skill で Compose UI を作り直す
theoriatec2024
1
510
Featured
See All Featured
Being A Developer After 40
akosma
91
590k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
280
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
520
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
30 Presentation Tips
portentint
PRO
1
400
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
370
Music & Morning Musume
bryan
48
7.4k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
560
Claude Code のすすめ
schroneko
67
230k
For a Future-Friendly Web
brad_frost
183
10k
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?