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
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
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
3k
SREのプラクティスを用いた3領域同時 マネジメントへの挑戦 〜SRE・情シス・セキュリティを統合した チーム運営術〜
coconala_engineer
2
640
Bill One 開発エンジニア 紹介資料
sansan33
PRO
4
17k
[CV勉強会@関東 World Model 読み会] Orbis: Overcoming Challenges of Long-Horizon Prediction in Driving World Models (Mousakhan+, NeurIPS 2025)
abemii
0
130
GSIが複数キー対応したことで、俺達はいったい何が嬉しいのか?
smt7174
3
150
コスト削減から「セキュリティと利便性」を担うプラットフォームへ
sansantech
PRO
3
1.5k
Codex 5.3 と Opus 4.6 にコーポレートサイトを作らせてみた / Codex 5.3 vs Opus 4.6
ama_ch
0
150
FinTech SREのAWSサービス活用/Leveraging AWS Services in FinTech SRE
maaaato
0
130
顧客の言葉を、そのまま信じない勇気
yamatai1212
1
350
こんなところでも(地味に)活躍するImage Modeさんを知ってるかい?- Image Mode for OpenShift -
tsukaman
0
130
StrandsとNeptuneを使ってナレッジグラフを構築する
yakumo
1
110
AI駆動開発を事業のコアに置く
tasukuonizawa
1
180
Featured
See All Featured
30 Presentation Tips
portentint
PRO
1
210
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
160
Are puppies a ranking factor?
jonoalderson
1
2.7k
What's in a price? How to price your products and services
michaelherold
247
13k
Context Engineering - Making Every Token Count
addyosmani
9
650
Leo the Paperboy
mayatellez
4
1.4k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.4k
The Language of Interfaces
destraynor
162
26k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
14k
GraphQLとの向き合い方2022年版
quramy
50
14k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
57
50k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
270
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?