Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Objective-Chaos (A Grande Mudança de 2014™)

Marcelo
August 05, 2014

Objective-Chaos (A Grande Mudança de 2014™)

Palestra apresentada no Mobcamp em 05/08/14 sobre novidades do iOS 8: Swift, extensions, indícios de novos tamanhos de tela e Cloud Kit.

Marcelo

August 05, 2014
Tweet

More Decks by Marcelo

Other Decks in Programming

Transcript

  1. • “Safe'by'design” • Generics • Enums • Tuplas • Sobrecarga'de'operadores

    • Sem'headers'e'ponto<e<vírgulas • Namespaces* • Funcional?
  2. class Pessoa : Equatable { let nome : String var

    apelido : String? init(nome:String, apelido:String? = nil) { self.nome = nome self.apelido = apelido } func nomeExibicao() -> String { if let apelido = self.apelido { return "\(nome) (\(apelido))" } return "\(nome)" } } func ==(lhs: Pessoa, rhs: Pessoa) -> Bool { return lhs.nome == rhs.nome }
  3. let marcelo = Pessoa(nome: "Marcelo Fabri") println(marcelo.nomeExibicao()) let felipao =

    Pessoa(nome: "Luiz Felipe Scolari", apelido: "Felipão") println(felipao.nomeExibicao()) felipao.apelido = "Dona Lúcia" println(felipao.nomeExibicao()) Marcelo Fabri Luiz Felipe Scolari (Felipão) Luiz Felipe Scolari (Dona Lúcia)
  4. let pessoas = [marcelo, felipao] if let idx = find(pessoas,

    felipao) { println("achou no indice \(idx)") } else { println("nao achou") }
  5. if let johnsStreet = john.residence?.address?.street { println("John's street name is

    \(johnsStreet).") } else { println("Unable to retrieve the address.") }
  6. enum Method: String { case OPTIONS = "OPTIONS" case GET

    = "GET" case HEAD = "HEAD" case POST = "POST" case PUT = "PUT" case PATCH = "PATCH" case DELETE = "DELETE" case TRACE = "TRACE" case CONNECT = "CONNECT" } Method.GET.toRaw() // "GET" Method.fromRaw("INVALID") // nil Method.fromRaw("GET") // Method.GET
  7. enum ParameterEncoding { case URL case JSON(options: NSJSONWritingOptions) case PropertyList(format:

    NSPropertyListFormat, options: NSPropertyListWriteOptions) func encode(request: NSURLRequest, parameters: [String: AnyObject]?) -> (NSURLRequest, NSError?) { ... } } h"ps:/ /github.com/Alamofire/Alamofire
  8. let container = CKContainer.defaultContainer() container.fetchUserRecordIDWithCompletionHandler { (recordID, error) in if

    !error { println(recordID.recordName) container.requestApplicationPermission(.PermissionUserDiscoverability) { (status, permissionError) in if status == CKApplicationPermissionStatus.Granted { container.discoverUserInfoWithUserRecordID(recordID) { (info, fetchError) in println("\(info.firstName) \(info.lastName)") } } } } } _4bb0c41f2bd6e1c6b888025d01f772c5 ➤ único por iCloud + app Marcelo Fabri h"ps:/ /gist.github.com/marcelofabri/0a722c477ec245d6fc3e