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
Libraries for the Swift
Search
yohei sugigami
May 13, 2015
Technology
5.5k
14
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Libraries for the Swift
Libraries for the Swift
yohei sugigami
May 13, 2015
More Decks by yohei sugigami
See All by yohei sugigami
Snapshot Testing in iOS
susieyy
6
3.3k
Redux with iOS
susieyy
0
1.4k
Why use Redux in iOS
susieyy
5
2.7k
ReduxRxを活用したアプリアーキテクチャ
susieyy
8
2.4k
Redux+Rxを活用したiOSアプリアーキテクチャ
susieyy
10
2.2k
Swaggerで始めるAPI定義管理とコードジェネレート
susieyy
14
7.8k
開発中のアプリをXcode9 & Swift4に移行しました
susieyy
0
3.8k
Wantedly People ViewModel and Rx
susieyy
7
7.6k
ReduxDevTools' power to the iOS development
susieyy
0
930
Other Decks in Technology
See All in Technology
実装だけじゃない! CCA-F取得エンジニアが教えるClaude Code開発プロセス活用術
diggymo
2
730
Claude Code 珍プレー好プレー
shinyasaita
0
330
ポストモーテム! DDoSからサイトは守れた。 でもビジネスは守れなかった。
bengo4com
1
3k
生成AI×AWS CDK×AWS FISで"振り返れる"ミニGameDayをつくろう
yoshimi0227
1
140
ボーイスカウトルールでメモリやスキルを改善しよう
azukiazusa1
4
1.2k
知らん間に、回ってる
ming_ayami
0
600
Kaggleで成長するために意識したこと
prgckwb
2
360
“それは自分の仕事じゃない"を越えて行け
yuukiyo
1
360
Foxgloveについて 実際にExtensionを開発して公開するまでの話 / About Foxglove: The Story of Developing and Releasing an Extension
ry0_ka
0
260
ruby.wasmとPicoRuby.wasmに対応した仮想DOMライブラリを作ってる話 #kaigieffect_kaigi
sue445
PRO
0
150
人を動かすのは時間ではなく、納得感 〜新任EMが入社3ヶ月、組織を2回変えた話〜
kakehashi
PRO
3
240
Amazon EVS で VCF 9.0 / 9.1 のサポート開始まとめ
mtoyoda
0
300
Featured
See All Featured
Into the Great Unknown - MozCon
thekraken
41
2.6k
Believing is Seeing
oripsolob
1
170
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.7k
WENDY [Excerpt]
tessaabrams
11
38k
Six Lessons from altMBA
skipperchong
29
4.3k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
610
Tell your own story through comics
letsgokoyo
1
990
Deep Space Network (abreviated)
tonyrice
0
220
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Making the Leap to Tech Lead
cromwellryan
135
10k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
220
Abbi's Birthday
coloredviolet
3
8.6k
Transcript
Libraries for the Swift yohei SUGIGAMI
None
We are selecting the library for a New App
HTTP + JSON ˔"MBNPpSF˒ ɹɹIUUQTHJUIVCDPN"MBNPpSF"MBNPpSF ˔4XJGUZ+40/˒ ɹɹIUUQTHJUIVCDPN4XJGUZ+40/4XJGUZ+40/ ˔"SHP˒
ɹɹIUUQTHJUIVCDPNUIPVHIUCPU"SHP ˔+40/&YQPSU˒ ɹɹIUUQTHJUIVCDPN"INFE"MJ+40/&YQPSU 3FGT4XJGUͷ+40/Λѻ͏ϥΠϒϥϦ·ͱΊ
JSONExport 3FGT4XJGUͷ+40/Λѻ͏ϥΠϒϥϦ·ͱΊ 4XJGU$MBTTFT5PVTFXJUI4XJGUZ+40/MJCSBSZ 4XJGU$MBTTFT5PVTFXJUI3FBMN
˔3FBDUJWF$PDPB#FUB˒ ɹɹIUUQTHJUIVCDPN3FBDUJWF$PDPB3FBDUJWF$PDPB ˔4XJGU5BTL˒ ɹɹIUUQTHJUIVCDPN3FBDU,JU4XJGU5BTL ˔#SJHIU'VUVSFT˒ ɹɹIUUQTHJUIVCDPN5IPNWJT#SJHIU'VUVSFT ˔'VUVSF,JU˒ ɹɹIUUQTHJUIVCDPN'VUVSF,JU'VUVSF,JU Promise
/ Future
˔3FBDUJWF$PDPB#FUB˒ ɹɹIUUQTHJUIVCDPN3FBDUJWF$PDPB3FBDUJWF$PDPB ˔3FBDU,JU˒ ɹɹIUUQTHJUIVCDPN3FBDU,JU3FBDU,JU ˔3Y4XJGU˒ ɹɹIUUQTHJUIVCDPNKTQBISTVNNFST3Y4XJGU ˔3Y4XJGU˒ ɹɹIUUQTHJUIVCDPNL[BIFS3Y4XJGU Reactive
SwiftTask func auth() -> AuthTask { return self.getAccessToken() .then({ (token:
String?, errorInfo: ResponseTask.ErrorInfo?) -> AuthTask in return AuthTask { progress, fulfill, reject, configure in if let errorInfo = errorInfo { reject(errorInfo.error!) return } if let token = token { self.ref.authWithCustomToken(token) { (error: NSError!, autData: AuthData!) in if let error = error { reject(error) return } if let autData = autData { fulfill(autData) } } } } }) }
ViewBinding ˔3FBDUJWF$PDPB#FUB˒ ɹɹIUUQTHJUIVCDPN3FBDUJWF$PDPB3FBDUJWF$PDPB ˔4XJGU#POE˒ ɹɹIUUQTHJUIVCDPN4XJGU#POE#POE ˔3FBDU,JU˒ ɹɹIUUQTHJUIVCDPN3FBDU,JU3FBDU,JU
SwiftBond class LoginViewController: UIViewController { @IBOutlet weak var activityIndicator: UIActivityIndicatorView!
@IBOutlet weak var usernameTextField: UITextField! @IBOutlet weak var passwordTextField: UITextField! @IBOutlet weak var loginButton: UIButton! let viewModel = LoginViewModel() override func viewDidLoad() { viewModel.username <->> usernameTextField viewModel.password <->> passwordTextField viewModel.activityIndicatorVisible ->> activityIndicator viewModel.loginButtonEnabled ->> loginButton viewModel.loginState ->| loginStateChangedObserver loginButton.dynEvent .filter(==, .TouchUpInside) ->| loginButtonTapObserver }
SwiftBond var tableViewDataSourceBond: UITableViewDataSourceBond<UITableViewCell>! override func viewDidLoad() { super.viewDidLoad() tableViewDataSourceBond
= UITableViewDataSourceBond(tableView: self.tableView) repositories.map { [unowned self] (repository: Repository) -> UITableViewCell in let cell = self.tableView .dequeueReusableCellWithIdentifier("cell") as UITableViewCell repository.name ->> cell.nameLabel repository.photo ->> cell.avatarImageView return cell } ->> tableViewDataSourceBond }
Functional tool kit ˔%PMMBSBOE$FOU˒ ɹɹIUUQTHJUIVCDPNBOLVSQ%PMMBSTXJGU ˔4XJGU[˒ ɹɹIUUQTHJUIVCDPNUZQFMJGU4XJGU[ ˔&Y4XJGU˒
ɹɹIUUQTHJUIVCDPNQ/SF&Y4XJGU
Date Helper ˔4XJGU.PNFOU˒ ɹɹIUUQTHJUIVCDPNBLPTNB4XJGU.PNFOU ˔5JNFQJFDF˒ ɹɹIUUQTHJUIVCDPNOBPUZ5JNFQJFDF ˔"'%BUF)FMQFS˒ ɹɹIUUQTHJUIVCDPNNFMWJUBY"'%BUF)FMQFS ˔5FNQP˒ ɹɹIUUQTHJUIVCDPNSFNJSPCFSU5FNQP
Logger ˔9$(-PHHFS˒ ɹɹIUUQTHJUIVCDPN%BWF8PPE$PN9$(-PHHFS ˔4XFMM˒ ɹɹIUUQTHJUIVCDPNIVCFSUS4XFMM
XCGLogger with Aspects let logger = XCGLogger.defaultInstance() logger.setup(logLevel: .Verbose, showLogLevel:
true, showFileNames: true, showLineNumbers: true, writeToFile: nil) let hooks = ["viewDidLoad", "viewWillAppear:", "viewWillDisappear:"] UIViewController.aspect_hookLoggers(hooks) { (_className: String?, _methodName: String?) in if var className = _className { if var methodName = _methodName { let items = className.componentsSeparatedByString(".") className = items.count > 1 ? items[1] : items[0] logger.verbose("\(className)#\(methodName)") } } }
XCGLogger with Aspects 2015-05-10 16:18:57.847 [Info] XCGLogger Version: 2.0 -
LogLevel: Verbose 2015-05-10 16:18:57.978 [Verbose] [AppDelegate.swift:87] UITabBarController#viewDidLoad 2015-05-10 16:18:57.995 [Verbose] [AppDelegate.swift:87] UITabBarController#viewWillAppear: 2015-05-10 16:18:58.005 [Verbose] [AppDelegate.swift:87] UITableViewController#viewDidLoad 2015-05-10 16:18:58.005 [Verbose] [AppDelegate.swift:87] UITableViewController#viewWillAppear:
Architecture
Architecture 7JFX $POUSPMMFS 7JFX.PEFM .PEFM 3FBDU,JU 4XJGU5BTL 4XJGUZ+40/ 4XJGU#POE .77.
Find a library
GitHub Search Repositories
GitHub Trending Repositories
Awesome Swift
Swift Toolbox
CocoaControls
Enjoy your library life.