Objective-Chaos (A Grande Mudança de 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.

841a0284060fa6faa652e95a467dcc69?s=128

Marcelo Fabri

August 05, 2014
Tweet

Transcript

  1. 3.
  2. 4.
  3. 5.
  4. 6.
  5. 7.
  6. 8.
  7. 15.
  8. 17.
  9. 18.

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

    • Sem'headers'e'ponto<e<vírgulas • Namespaces* • Funcional?
  10. 20.

    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 }
  11. 21.

    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)
  12. 24.

    let pessoas = [marcelo, felipao] if let idx = find(pessoas,

    felipao) { println("achou no indice \(idx)") } else { println("nao achou") }
  13. 25.

    if let johnsStreet = john.residence?.address?.street { println("John's street name is

    \(johnsStreet).") } else { println("Unable to retrieve the address.") }
  14. 27.

    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
  15. 28.

    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
  16. 31.
  17. 32.
  18. 34.
  19. 35.
  20. 42.
  21. 45.
  22. 48.
  23. 51.
  24. 52.
  25. 53.
  26. 54.
  27. 55.
  28. 60.

    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
  29. 62.
  30. 65.
  31. 66.
  32. 67.