Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)

Embed Size (px)

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)

Text of Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)

  • 1. Swift A nova linguagem de programao da Apple Juliana Chahoud

2. Juliana Chahoud 3. Apple anuncia nova linguagem de programao! +- 20 dias de experincia com Swift 4. Caractersticas Swift Moderna, Rpida e Segura iOS 7 e 8 OS X 10.9 e 10.10 5. Xcode 6 - Beta2 6. Projeto ObjC x Swift Swift no possui arquivos header (.h) main.m no mais necessrio X 7. No necessrio criar um projeto para experimentar o Swift Playground REPL (Read-Eval-Print-Loop) 8. Demo: REPL 9. Como praticar de fato Criar um cenrio comum de um app simples, interagindo com Cocoa e Objective-C: Utilizar alguma API - NSURLConnection TableView e clula customizada Integrao com Cocoapods e Obj-C Aproveitando a onda do momento: App Copa do Mundo 10. Estudo de caso: App Copa do Mundo 11. Criao do projeto WorldCup 12. Demo: app Copa do Mundo https://github.com/jchahoud/WorldCup-Swift.git 13. AppDelegate /* In Obj-C: #import */ 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 */ 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 } 14. Storyboard Universal 15. API: resultado de jogos 16. Classe Match: Swift x Obj-C import 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 } } 17. Subclasse de UITableViewCell import 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)) } } 18. API: informaes 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 }) /* ... */ 19. Integrao com CocoaPods 20. Visualizao 3D das camadas UI 21. Mais caractersticas do Swift deinit: chamado antes do objeto ser deallocated Gerenciamento de memria: Strong, Weak, e Unowned Propriedades: Podem ter getters e setters pode-se usar willSet e didSet 22. Mais caractersticas do Swift Funes: podem ser aninhadas podem receber nmero varivel de parmetros (numbers: Int...) podem receber / retornar outras funes enum e struct podem ter funes extension (category) adiciona funcionalidade a um tipo existente Generics: func swapTwoValues(inout a: T, inout b: T) 23. Mais Informaes Documentao The Swift Programming Language Using Swift with Cocoa and Objective-C https://developer.apple.com/swift/ Vdeos WWDC 2014 https://developer.apple.com/videos/wwdc/2014/ Sample Code https://developer.apple.com/library/prerelease/ios/navigation/ 24. Obrigada! Dvidas? Juliana Chahoud jchahoud@icloud.com @jchahoud http://jchahoud.com