Slide 1

Slide 1 text

Swift ᔄࣳਞق ᖫᑕਫ᪢ @hankbao 1

Slide 2

Slide 2 text

՗ Obj-C ک Swift ౯ժ឴஑ԧՋԍ! @hankbao 2

Slide 3

Slide 3 text

ᑮ؀ — C: NULL — Objective-C: nil — Swift: Optional.None @hankbao 3

Slide 4

Slide 4 text

Კ᧏ — ᖫᦲᲙ᧏ — ෙ᥺०ᨳ — ᬩᤈ෸Კ᧏ @hankbao 4

Slide 5

Slide 5 text

ᖫᦲᲙ᧏ @hankbao 5

Slide 6

Slide 6 text

ෙ᥺०ᨳ @hankbao 6

Slide 7

Slide 7 text

ᬩᤈ෸Კ᧏ @hankbao 7

Slide 8

Slide 8 text

Ոᙂ༄ၥ let img = UIImage(named: "project")! @hankbao 8

Slide 9

Slide 9 text

ᖫᦲ࢏༄ၥ extension UIImage { enum Asset: String { case Favorite = "favorite" case Project = "project" ... } convenience init(asset: Asset) { ... } } let img = UIImage(asset: .Project) @hankbao 9

Slide 10

Slide 10 text

ᔄࣳਞقጱᩒრᓕቘ — R.swift — SwiftGen — Shark — Laurine @hankbao 10

Slide 11

Slide 11 text

ᔄࣳਞق — ᩒრᓕቘ — ᭗Ꭳݷᑍ — ࢶᇆݷᑍ — UI ਁᒧԀ — ... — AnyObject => T @hankbao 11

Slide 12

Slide 12 text

DataSource struct User { let id: String let name: String } struct Channel { let id: String let title: String } @hankbao 12

Slide 13

Slide 13 text

DataSource class DataSource: NSObject, UITableViewDataSource { typealias Configure = (cell: UITableViewCell, item: Item) -> UITableViewCell } tableView.dataSource = DataSource(configure: ...) @hankbao 13

Slide 14

Slide 14 text

DataSource enum DataItem { case UserItem(user: User) case ChannelItem(channel: Channel) } @hankbao 14

Slide 15

Slide 15 text

DataSource protocol ReuseIdentifierType { var reuseID: String { get } } extension DataItem: ReuseIdentifierType { var reuseID: String { switch self { case .UserItem: return "user_cell" case .ChannelItem: return "channel_cell" } } } @hankbao 15

Slide 16

Slide 16 text

DataSource class DataSource: NSObject, UITableViewDataSource { func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let item = items[indexPath.row] let cell = tableView.dequeueReusableCellWithIdentifier(item.reuseID, forIndexPath: indexPath) return configure(cell: cell, item: item) } ... } @hankbao 16

Slide 17

Slide 17 text

݇ᘍᩒා — The Swift Programming Language — WWDC — objc.io — realm.io @hankbao 17

Slide 18

Slide 18 text

Thanks @hankbao 18