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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
AIエージェント、 社内展開の前に知っておきたいこと
oracle4engineer
PRO
2
130
複数クラスタ運用と検索の高度化:ビズリーチにおけるElastic活用事例 / ElasticON Tokyo2026
visional_engineering_and_design
0
160
実践 Datadog MCP Server
nulabinc
PRO
2
190
OCI Security サービス 概要
oracle4engineer
PRO
2
13k
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
8
7.2k
CyberAgentの生成AI戦略 〜変わるものと変わらないもの〜
katayan
0
180
OSC仙台プレ勉強会 AlmaLinuxとは
koedoyoshida
0
170
ランサムウエア対策してますか?やられた時の対策は本当にできてますか?AWSでのリスク分析と対応フローの泥臭いお話。
hootaki
0
130
チームのモメンタムに投資せよ! 不確実性と共存しながら勢いを生み出す3つの実践
kakehashi
PRO
1
100
[E2]CCoEはAI指揮官へ。Bedrock×MCPで構築するコスト・セキュリティ自律運用基盤
taku1418
0
160
OCI技術資料 : コンピュート・サービス 概要
ocise
4
54k
内製AIチャットボットで学んだDatadog LLM Observability活用術
mkdev10
0
110
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.2k
Chasing Engaging Ingredients in Design
codingconduct
0
140
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
120
The Curse of the Amulet
leimatthew05
1
10k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.4k
Marketing to machines
jonoalderson
1
5k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
310
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
320
Done Done
chrislema
186
16k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
140
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?