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
SwiftBondReactiveKit.pdf
Search
thedevme
July 21, 2016
Technology
12k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
SwiftBondReactiveKit.pdf
Presentation given at Realm about why I enjoy using ReactiveKit formerly known as SwiftBond.
thedevme
July 21, 2016
More Decks by thedevme
See All by thedevme
Developing Your Kaizen Plan by Craig Clayton
thedevme
0
150
Other Decks in Technology
See All in Technology
Refining Active Record
shugo
0
160
コンテナ運用におけるネットワーク・コンテナコストの削減方法/How to Reduce Network and Container Costs in Container Operations
masakiokuda
1
250
Persisting Massive Data with Rails ~Designing for 60 billion rows, and fighting the bottlenecks~ Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
0
730
DevelopersIO 2026 知識の地図を描く ─ オントロジーとは何か?
ishikawa_satoru
1
1.7k
大型犬好きによるPugの紹介
yamanoku
1
160
自作バイナリを動かす「入口」8選
puhitaku
2
1.3k
DBについての基礎説明(MySQL編) - コロプラ 2026年度 新卒研修
colopl
0
100
専門領域のAIをどう評価するか
bengo4com
2
250
スキマバイトという雇用形態は存在しないので、雇用期間1日のアルバイト契約を事業者とワーカーが結ぶ手続きを支えるのがタイミーなんです
akitoshiga
0
200
ブラウザとサーバーから考えるAI時代のフロントエンド監視
shogo4131
3
980
宣言型部分更新は何を解決しどこへ向かうのか
shuta13
1
460
日本語に強いオープンな大規模言語モデル「LLM-jp」
odashi
5
1.1k
Featured
See All Featured
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
The Invisible Side of Design
smashingmag
301
52k
Optimizing for Happiness
mojombo
378
71k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.4k
Statistics for Hackers
jakevdp
799
230k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
Tell your own story through comics
letsgokoyo
1
1.1k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
410
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
260
SEO for Brand Visibility & Recognition
aleyda
0
4.8k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
BBQ
matthewcrist
90
10k
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?