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
SwiftBondReactiveKit.pdf
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
thedevme
July 21, 2016
Technology
1
12k
SwiftBondReactiveKit.pdf
Presentation given at Realm about why I enjoy using ReactiveKit formerly known as SwiftBond.
thedevme
July 21, 2016
Tweet
Share
More Decks by thedevme
See All by thedevme
Developing Your Kaizen Plan by Craig Clayton
thedevme
0
140
Other Decks in Technology
See All in Technology
MCPでつなぐElasticsearchとLLM - 深夜の障害対応を楽にしたい / Bridging Elasticsearch and LLMs with MCP
sashimimochi
0
150
Greatest Disaster Hits in Web Performance
guaca
0
200
15 years with Rails and DDD (AI Edition)
andrzejkrzywda
0
190
データの整合性を保ちたいだけなんだ
shoheimitani
8
3.1k
10Xにおける品質保証活動の全体像と改善 #no_more_wait_for_test
nihonbuson
PRO
2
230
クレジットカード決済基盤を支えるSRE - 厳格な監査とSRE運用の両立 (SRE Kaigi 2026)
capytan
6
2.7k
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
13k
Webhook best practices for rock solid and resilient deployments
glaforge
1
280
AI駆動PjMの理想像 と現在地 -実践例を添えて-
masahiro_okamura
1
110
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
42k
配列に見る bash と zsh の違い
kazzpapa3
1
130
GitHub Issue Templates + Coding Agentで簡単みんなでIaC/Easy IaC for Everyone with GitHub Issue Templates + Coding Agent
aeonpeople
1
210
Featured
See All Featured
GitHub's CSS Performance
jonrohan
1032
470k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.6k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
410
Facilitating Awesome Meetings
lara
57
6.8k
From π to Pie charts
rasagy
0
120
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.6k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.8k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Color Theory Basics | Prateek | Gurzu
gurzu
0
200
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
51
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.3k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
240
Transcript
@thedevme SWIFT BOND My name is Bond @thedevme Craig Clayton
None
None
What is SwiftBond?
Why I use SwiftBond? ReactiveKit?
None
None
None
UILabel
@IBOutlet var lblAway: UILabel! var awayScore = Property<String>(“0”) awayScore.bindTo(lblAway) UILabel
@IBOutlet var lblAway: UILabel! var awayScore = Property<String>(“0”) awayScore.bindTo(lblAway) UILabel
@IBOutlet var lblAway: UILabel! var awayScore = Property<String>(“0”) awayScore.bindTo(lblAway) UILabel
UIButton
btnReset.rTap.observeNext { [weak self] _ in guard let weakSelf =
self else { return } weakSelf.homeScoreValue = 0 weakSelf.awayScoreValue = 0 weakSelf.awayScore.value = "0" weakSelf.homeScore.value = "0" }.disposeIn(rBag) UIButton
btnReset.rTap.observeNext { [weak self] _ in guard let weakSelf =
self else { return } weakSelf.homeScoreValue = 0 weakSelf.awayScoreValue = 0 weakSelf.awayScore.value = "0" weakSelf.homeScore.value = "0" }.disposeIn(rBag) UIButton
btnReset.rTap.observeNext { [weak self] _ in guard let weakSelf =
self else { return } weakSelf.homeScoreValue = 0 weakSelf.awayScoreValue = 0 weakSelf.awayScore.value = "0" weakSelf.homeScore.value = "0" }.disposeIn(rBag) UIButton
UIBarButtonItem
barBtnCamera.rTap.observeNext { [weak self] _ in guard let weakSelf =
self else { return } weakSelf.lblDisplay.rText.value = "Camera Tapped” }.disposeIn(rBag) UIBarButtonItem
barBtnCamera.rTap.observeNext { [weak self] _ in guard let weakSelf =
self else { return } weakSelf.lblDisplay.rText.value = "Camera Tapped” }.disposeIn(rBag) UIBarButtonItem
barBtnCamera.rTap.observeNext { [weak self] _ in guard let weakSelf =
self else { return } weakSelf.lblDisplay.rText.value = "Camera Tapped” }.disposeIn(rBag) UIBarButtonItem
UISegmentedControl
segmentControl.rSelectedSegmentIndex.skip(1).observeNext { … in guard let weakSelf = self else
{ return } if value == 0 { weakSelf.lblDisplay.rText.value = "Players Segment selected" } else { weakSelf.lblDisplay.rText.value = "Coaches Segment selected" } }.disposeIn(rBag) UISegmentedControl
segmentControl.rSelectedSegmentIndex.skip(1).observeNext { … in guard let weakSelf = self else
{ return } if value == 0 { weakSelf.lblDisplay.rText.value = "Players Segment selected" } else { weakSelf.lblDisplay.rText.value = "Coaches Segment selected" } }.disposeIn(rBag) UISegmentedControl
segmentControl.rSelectedSegmentIndex.skip(1).observeNext { … in guard let weakSelf = self else
{ return } if value == 0 { weakSelf.lblDisplay.rText.value = "Players Segment selected" } else { weakSelf.lblDisplay.rText.value = "Coaches Segment selected" } }.disposeIn(rBag) UISegmentedControl
UISwitch
switchReactive.rOn.skip(1).observeNext { [weak self] value in guard let weakSelf =
self else { return } weakSelf.lblDisplay.rText.value = “\(value)" }.disposeIn(rBag) UISwitch
switchReactive.rOn.skip(1).observeNext { [weak self] value in guard let weakSelf =
self else { return } weakSelf.lblDisplay.rText.value = “\(value)" }.disposeIn(rBag) UISwitch
switchReactive.rOn.skip(1).observeNext { [weak self] value in guard let weakSelf =
self else { return } weakSelf.lblDisplay.rText.value = “\(value)" }.disposeIn(rBag) UISwitch
None
tableView.rDataSource.forwardTo = self data.bindTo(tableView) { [weak self] indexPath, dataSource, collectionView
in guard let weakSelf = self else { return UITableViewCell() } let cell = weakSelf.tableView.dequeueReusableCellWithIdentifier (weakSelf.textCellIdentifier, forIndexPath: indexPath) let row = indexPath.row cell.textLabel?.text = weakSelf.data[row] return cell } UITableView
tableView.rDataSource.forwardTo = self data.bindTo(tableView) { [weak self] indexPath, dataSource, collectionView
in guard let weakSelf = self else { return UITableViewCell() } let cell = weakSelf.tableView.dequeueReusableCellWithIdentifier (weakSelf.textCellIdentifier, forIndexPath: indexPath) let row = indexPath.row cell.textLabel?.text = weakSelf.data[row] return cell } UITableView
tableView.rDataSource.forwardTo = self data.bindTo(tableView) { [weak self] indexPath, dataSource, collectionView
in guard let weakSelf = self else { return UITableViewCell() } let cell = weakSelf.tableView.dequeueReusableCellWithIdentifier (weakSelf.textCellIdentifier, forIndexPath: indexPath) let row = indexPath.row cell.textLabel?.text = weakSelf.data[row] return cell } UITableView
tableView.rDataSource.forwardTo = self data.bindTo(tableView) { [weak self] indexPath, dataSource, collectionView
in guard let weakSelf = self else { return UITableViewCell() } let cell = weakSelf.tableView.dequeueReusableCellWithIdentifier (weakSelf.textCellIdentifier, forIndexPath: indexPath) let row = indexPath.row cell.textLabel?.text = weakSelf.data[row] return cell } UITableView
MMMM …
None
None
None
None
None
QUESTIONS?