swift, a nova linguagem de programação da apple (cocoaheads sao paulo)
DESCRIPTION
Swift, a nova linguagem de programação da Apple Swift é a nova linguagem de programação da Apple, anunciada no começo de junho durante a WWDC. Nessa apresentação será dada uma introdução à linguagem, através de um estudo de caso de um aplicativo da Copa do Mundo. Nesse aplicativo será demonstrado como usar uma API para exibir os resultados dos jogos, como utilizar uma TableView com célula customizada, bem como integrar CocoaPods e Obj-C com Swift, tudo de uma maneira bem simples. obs: apresentação feita em 24/06/2014 durante o encontro do Cocoaheads SP (http://www.cocoaheads.com.br)TRANSCRIPT
![Page 1: Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)](https://reader030.vdocuments.site/reader030/viewer/2022013108/55821031d8b42ac7728b4700/html5/thumbnails/1.jpg)
SwiftA nova linguagem de
programação da Apple
Juliana Chahoud
![Page 2: Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)](https://reader030.vdocuments.site/reader030/viewer/2022013108/55821031d8b42ac7728b4700/html5/thumbnails/2.jpg)
Juliana Chahoud
![Page 3: Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)](https://reader030.vdocuments.site/reader030/viewer/2022013108/55821031d8b42ac7728b4700/html5/thumbnails/3.jpg)
Apple anuncia nova linguagem de programação!
+- 20 dias de experiência com Swift
![Page 4: Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)](https://reader030.vdocuments.site/reader030/viewer/2022013108/55821031d8b42ac7728b4700/html5/thumbnails/4.jpg)
Características Swift
• Moderna, Rápida e Segura
• iOS 7 e 8
• OS X 10.9 e 10.10
![Page 5: Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)](https://reader030.vdocuments.site/reader030/viewer/2022013108/55821031d8b42ac7728b4700/html5/thumbnails/5.jpg)
Xcode 6 - Beta2
![Page 6: Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)](https://reader030.vdocuments.site/reader030/viewer/2022013108/55821031d8b42ac7728b4700/html5/thumbnails/6.jpg)
Projeto ObjC x Swift• Swift não possui arquivos header (.h)
• main.m não é mais necessário
X
![Page 7: Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)](https://reader030.vdocuments.site/reader030/viewer/2022013108/55821031d8b42ac7728b4700/html5/thumbnails/7.jpg)
Não é necessário criar um projeto para “experimentar” o Swift
Playground REPL (Read-Eval-Print-Loop)
![Page 8: Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)](https://reader030.vdocuments.site/reader030/viewer/2022013108/55821031d8b42ac7728b4700/html5/thumbnails/8.jpg)
Demo: REPL
![Page 9: Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)](https://reader030.vdocuments.site/reader030/viewer/2022013108/55821031d8b42ac7728b4700/html5/thumbnails/9.jpg)
Como praticar de fato
• Criar um cenário comum de um app simples, interagindo com Cocoa e Objective-C:
• Utilizar alguma API - NSURLConnection
• TableView e célula customizada
• Integração com Cocoapods e Obj-C
• Aproveitando a onda do momento: App Copa do Mundo
![Page 10: Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)](https://reader030.vdocuments.site/reader030/viewer/2022013108/55821031d8b42ac7728b4700/html5/thumbnails/10.jpg)
Estudo de caso: App Copa do Mundo
![Page 11: Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)](https://reader030.vdocuments.site/reader030/viewer/2022013108/55821031d8b42ac7728b4700/html5/thumbnails/11.jpg)
Criação do projeto WorldCup
![Page 12: Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)](https://reader030.vdocuments.site/reader030/viewer/2022013108/55821031d8b42ac7728b4700/html5/thumbnails/12.jpg)
Demo: app Copa do Mundo
https://github.com/jchahoud/WorldCup-Swift.git
![Page 13: Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)](https://reader030.vdocuments.site/reader030/viewer/2022013108/55821031d8b42ac7728b4700/html5/thumbnails/13.jpg)
AppDelegate/* In Obj-C: #import <UIKit/UIKit.h> */ import UIKit
/* "Replace" the main file and UIApplicationMain instance creation In Obj-C (in main.m): UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); */ @UIApplicationMain
/* In Obj-C: @interface AppDelegate : UIResponder <UIApplicationDelegate> */ class AppDelegate: UIResponder, UIApplicationDelegate {
/* In Obj-C: @property (strong, nonatomic) UIWindow *window; */ var window: UIWindow?
/* In Obj-C - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { */ func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool { return true }
![Page 14: Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)](https://reader030.vdocuments.site/reader030/viewer/2022013108/55821031d8b42ac7728b4700/html5/thumbnails/14.jpg)
Storyboard Universal
![Page 15: Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)](https://reader030.vdocuments.site/reader030/viewer/2022013108/55821031d8b42ac7728b4700/html5/thumbnails/15.jpg)
API: resultado de jogos
![Page 16: Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)](https://reader030.vdocuments.site/reader030/viewer/2022013108/55821031d8b42ac7728b4700/html5/thumbnails/16.jpg)
Classe Match: Swift x Obj-Cimport Foundation
/* In Obj-C: @interface Match : NSObject */
class Match {
/* In Obj-C: @property (nonatomic,strong) NSString* c_AwayLogoImage; */ var c_AwayLogoImage:String?
var c_AwayTeam_en:String? var c_HomeLogoImage:String? var c_HomeTeam_en:String? var c_Stadium:String? var n_AwayGoals:Int? var n_HomeGoals:Int? /* In Obj-C: -(id) initWithDictionary:(NSDictionary*)dict { self = [super init]; if (self){ _c_AwayLogoImage = dict[@"c_AwayLogoImage"]; //.... } return self; } */ init(dict: NSDictionary!) { c_AwayLogoImage = dict["c_AwayLogoImage"] as? String c_AwayTeam_en = dict["c_AwayTeam_en"] as? String c_HomeLogoImage = dict["c_HomeLogoImage"] as? String c_HomeTeam_en = dict["c_HomeTeam_en"] as? String c_Stadium = dict["c_Stadium"] as? String n_AwayGoals = dict["n_AwayGoals"] as? Int n_HomeGoals = dict["n_HomeGoals"] as? Int
} }
![Page 17: Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)](https://reader030.vdocuments.site/reader030/viewer/2022013108/55821031d8b42ac7728b4700/html5/thumbnails/17.jpg)
Subclasse de UITableViewCellimport UIKit
class MatchCell: UITableViewCell {
@IBOutlet var homeTeam: UILabel @IBOutlet var homeGoals: UILabel @IBOutlet var homeLogoImage: UIImageView @IBOutlet var awayTeam: UILabel @IBOutlet var awayGoals: UILabel @IBOutlet var awayLogoImage: UIImageView @IBOutlet var stadiums: UILabel func configCell (match: Match)->Void { //load teams names and stadium homeTeam.text = match.c_HomeTeam_en awayTeam.text = match.c_AwayTeam_en stadiums.text = match.c_Stadium
//load team goals unwrapping the optionals if let goals = match.n_HomeGoals { homeGoals.text = "\(goals)" }
if let goals = match.n_AwayGoals { awayGoals.text = "\(goals)" } //lazy images loading with SDWebImage homeLogoImage.setImageWithURL(NSURL(string:match.c_HomeLogoImage))
awayLogoImage.setImageWithURL(NSURL(string:match.c_AwayLogoImage)) } }
![Page 18: Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)](https://reader030.vdocuments.site/reader030/viewer/2022013108/55821031d8b42ac7728b4700/html5/thumbnails/18.jpg)
API: informações de jogos let apiFifaUrl = NSURL (string: "http://live.mobileapp.fifa.com/api/wc/matches") var request:NSURLRequest = NSURLRequest (URL: apiFifaUrl) NSURLConnection.sendAsynchronousRequest (request, queue: NSOperationQueue.mainQueue(), completionHandler:{ (response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in
})
/* ... */
![Page 19: Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)](https://reader030.vdocuments.site/reader030/viewer/2022013108/55821031d8b42ac7728b4700/html5/thumbnails/19.jpg)
Integração com CocoaPods
![Page 20: Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)](https://reader030.vdocuments.site/reader030/viewer/2022013108/55821031d8b42ac7728b4700/html5/thumbnails/20.jpg)
Visualização 3D das camadas UI
![Page 21: Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)](https://reader030.vdocuments.site/reader030/viewer/2022013108/55821031d8b42ac7728b4700/html5/thumbnails/21.jpg)
Mais características do Swift
• deinit: chamado antes do objeto ser “deallocated”
• Gerenciamento de memória: Strong, Weak, e Unowned
• Propriedades:
• Podem ter getters e setters
• pode-se usar willSet e didSet
![Page 22: Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)](https://reader030.vdocuments.site/reader030/viewer/2022013108/55821031d8b42ac7728b4700/html5/thumbnails/22.jpg)
Mais características do Swift• Funções:
• podem ser aninhadas
• podem receber número variável de parâmetros (numbers: Int...)
• podem receber / retornar outras funções
• enum e struct podem ter funções
• extension (category) adiciona funcionalidade a um tipo existente
• Generics:
• func swapTwoValues<T>(inout a: T, inout b: T)
![Page 23: Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)](https://reader030.vdocuments.site/reader030/viewer/2022013108/55821031d8b42ac7728b4700/html5/thumbnails/23.jpg)
Mais Informações
Documentação
The Swift Programming Language Using Swift with Cocoa and Objective-C https://developer.apple.com/swift/
Vídeos
WWDC 2014 https://developer.apple.com/videos/wwdc/2014/
Sample Code https://developer.apple.com/library/prerelease/ios/navigation/