iOS 8 com swift

31
IOS 8 COM SWIFT Novidades e a Nova Linguagem da Apple

description

Aprenda o Swift e como usá-lo no iOS 8

Transcript of iOS 8 com swift

Page 1: iOS 8 com swift

IOS 8 COM SWIFTNovidades e a Nova Linguagem da Apple

Page 2: iOS 8 com swift

VARIÁVEIS

• Podem ter o tipo inferido pelo compilador

• Declaradas com a expressão var var  oi:  String  =  "Oi  Mundo"  var  oi  =  "Oi  Mundo"  

• Constantes declaradas com a expressão let let  msg:  String  =  "Oi  Mundo"    let  texto  =  "Oi  Mundo"  

Page 3: iOS 8 com swift

STRINGS

• Concatenadas com o sinal + let  titulo  =  “Palestra  de  Swift"  let  opiniao  =  "Maravilhosa!"  let  descricao  =  titulo  +  "  -­‐  "  +  opiniao  

• Podem ser interpoladas com variáveis let  dataPublicacao  =  "29  de  Novembro  de  2014”  let  artigoBlog  =  "Artigo  publicado  em:  \(dataPublicacao)"

Page 4: iOS 8 com swift

ENUMERAÇÕESenum  Valor:  Int  {          case  As  =  1          case  Dois,  Tres,  Quatro,  Cinco,  Seis,  Setes,  Oito,  Nove,  Dez          case  Valete,  Rainha,  Rei          func  descricao()  -­‐>  String  {                  switch  self  {                  case  .As:                          return  "as"                  case  .Valete:                          return  "valete"                  case  .Rainha:                          return  "rainha"                  case  .King:                          return  "rei"                  default:                          return  String(self.rawValue)                  }          }  }  !let  as  =  Valor.As  let  valorAs  =  as.rawValue

Page 5: iOS 8 com swift

ENUMERAÇÕESenum  Naipe  {          case  Espadas,  Copas,  Diamonds,  Paus          func  descricao()  -­‐>  String  {                  switch  self  {                  case  .Espadas:                          return  "espadas"                  case  .Copas:                          return  "copas"                  case  .Ouro:                          return  "ouro"                  case  .Paus:                          return  "paus"                  }          }  }  !let  copas  =  Naipe.Copas  let  copasDescricao  =  copas.descricao()

Page 6: iOS 8 com swift

ESTRUTURAS

struct  Carta  {          var  valor:  Valor          var  naipe:  Naipe          func  descricao()  -­‐>  String  {                  return  "\(valor.descricao())  de  \(naipe.descricao())"          }  }  !let  tresDeEspadas  =  Carta(valor:  .Tres,  naipe:  .Espadas)  let  descricaoTresDeEspadas  =  tresDeEspadas.descricao()

Page 7: iOS 8 com swift

OUTROS TIPOS DE DADOS• Inteiro

• Int

• Ponto flutuante

• Double : 64 bits

• Float : 32 bits

• Booleano

• Bool

Page 8: iOS 8 com swift

COLEÇÕES – ARRAY• Declaração

var  nomesCartas:  String[]  =  ["Valete",  "Rainha",  "Rei"]  var  nomesCartas  =  ["Valete",  "Rainha",  "Rei"]  

• Adicionar item nomesCartas  +=  "Ás"  nomesCartas  +=  ["2",  "3",  "4",  "5",  "6",  "7",  "8",  "9",  "10"]  

• Remover item ss  

• Substituir item tarefas[0]  =  "Revistar  o  Artigo  do  Blog"  tarefas[2..<5]  =  ["Pegar  Roupas","Pegar  Comida",  "Fazer  Jantar"]

Page 9: iOS 8 com swift

COLEÇÕES – DICTIONARY• Declaração

var  cartas  =  ["Valete"  :  11,  "Rainha"  :  12,  "Rei"  :  13]  

• Adicionar item cartas["Valete"]  =  11  

• Remover item ss  

• Substituir item cartas["Valete"]  =  11  cartas["Rainha"]  =  12  cartas["Rei"]  =  13

Page 10: iOS 8 com swift

CONTROLE DE FLUXO

while  condicao  {        println("repetição")  }  !!var  mensagem  =  "Começando  o  download"  do  {     println(mensagem)     mensagem  =  "Fazendo  dowload.."  }  while  !completo  

Page 11: iOS 8 com swift

CONTROLE DE FLUXO

var  nomesCartas  =  ["Valete",  "Rainha",  "Rei"]  !for  var  i  =  1;  i  <  nomesCartas.count;  ++i  {     println(nomesCartas[i])  }  !for  cardName  in  cardNames  {     println(cardName)  }

Page 12: iOS 8 com swift

CONTROLE DE FLUXO

for  numero  in  1...10  {     println("\(numero)  vezes  2  é  \(numero*2)")  }  

!var  cartas  =  ["Valete"  :  11,  "Rainha"  :  12,  "Rei"  :  13]  

!for  (nome,  valor)  in  cartas  {     println("\(nome)  =  \(valor)")  }

Page 13: iOS 8 com swift

CONDICIONAISif  valorCarta  ==  11  {     println("Valete")  }  else  if  valorCarta  ==  12  {     println("Rainha")  }  else  {     println("Desconhecido")  }  !switch  valorCarta  {     case  11:       println("Valete")     case  12:         println("Rainha")     default:       println("Desconhecido")  }

Page 14: iOS 8 com swift

CONDICIONAISvar  usuarios:  User[]  =  [  ...  ]  var  host  =  /*  algum  usuário  */    !for  usuario  in  usuarios  {          if  usuario  ===  host  {  !                println("este  é  o  host")          }  else  {  !                println("este  é  um  convidado")          }  }

Page 15: iOS 8 com swift

CONDICIONAIS

switch  distancia  {     case  0:       println("inválida")     case  1,2,3,4,5:       println("perto")     case  6,7,8,9,10:       println("longe")     default:       println("muito  longe")  }

switch  distancia  {     case  0:       println("inválida")     case  1..5:       println("perto")     case  6..10  :       println("longe")     default:       println("muito  longe")  }

Page 16: iOS 8 com swift

FUNÇÕES

func  imprimeCarta(nomeCarta:  String,  valorCarta:  Int)  {     println("\(nomeCarta)  =  \(valorCarta)")  }  !func  imprimeCarta(nomeCarta:  String,  valorCarta:  Int)  -­‐>  String  {     return  "\(nomeCarta)  =  \(valorCarta)"  }

Page 17: iOS 8 com swift

OPCIONAIS• Permitem ter variáveis sem valor (nil)

• Podem estar em parâmetros de funções, em seu retorno ou declarações de variáveis

var  x:  Float?  var  y:  Float?  !x  =  1.2  y  =  nil  !func  adiciona(x:Float?,  y:Float?)  -­‐>  Float  {     if  x  &&  y  {                    return  x  +  y          }  else  {                    return  nil          }  }

Page 18: iOS 8 com swift

OPCIONAISfunc  encontraAcao(empresa:  String)  -­‐>  String?  {        if  (empresa  ==  "Apple")  {              return  "AAPL"        }  else  if  (empresa  ==  "Google")  {              return  "GOOG"        }  !      return  nil  }  !var  acao:String?  =  encontraAcao("Facebook")  let  texto  =  "Código  da  Ação  -­‐  "  let  menssagem  =  texto  +  acao    //  Erro  de  compilação  aqui  println(menssagem)

Page 19: iOS 8 com swift

OPCIONAIS E UNWRAPPINGfunc  encontraAcao(empresa:  String)  -­‐>  String?  {        if  (empresa  ==  "Apple")  {              return  "AAPL"        }  else  if  (empresa  ==  "Google")  {              return  "GOOG"        }  !      return  nil  }  !var  acao:String?  =  encontraAcao("Facebook")  let  texto  =  "Código  da  Ação  -­‐  "  if  acao  {          let  menssagem  =  texto  +  acao!          println(menssagem)  }

Page 20: iOS 8 com swift

OPCIONAIS E UNWRAPPINGfunc  encontraAcao(empresa:  String)  -­‐>  String?  {        if  (empresa  ==  "Apple")  {              return  "AAPL"        }  else  if  (empresa  ==  "Google")  {              return  "GOOG"        }  !      return  nil  }  !var  acao:String?  =  encontraAcao("Facebook")  let  texto  =  "Código  da  Ação  -­‐  "  if  let  acaoTemp  =  acao  {          let  mensagem  =  texto  +  acaoTemp          println(mensagem)  }

Page 21: iOS 8 com swift

OPCIONAIS E UNWRAPPINGfunc  encontraAcao(empresa:  String)  -­‐>  String?  {        if  (empresa  ==  "Apple")  {              return  "AAPL"        }  else  if  (empresa  ==  "Google")  {              return  "GOOG"        }  !      return  nil  }  !let  texto  =  "Código  da  Ação  -­‐  "  if  var  acao  =  encontraAcao("Facebook")  {          let  mensagem  =  texto  +  acaoTemp          println(mensagem)  }

Page 22: iOS 8 com swift

OPCIONAIS E UNWRAPPINGclass  Acao  {          var  codigo:  String?            var  preco:  Double?    }  !func  encontraAcao(empresa:  String)  -­‐>  Acao?  {          if  (empresa  ==  "Apple")  {                  let  aapl:  Acao  =  Acao()                  aapl.codigo  =  "AAPL"                  aapl.preco  =  90.32                  return  aapl                        }  else  if  (empresa  ==  "Google")  {                  let  goog:  Acao  =  Acao()                  goog.codigo  =  "GOOG"                  goog.preco  =  556.36                        return  goog          }          return  nil  }

Page 23: iOS 8 com swift

OPCIONAIS E ENCADEAMENTO

if  let  acao  =  encontraAcao("Apple")  {          if  let  precoAcao  =  acao.preco  {                  let  custoTotal  =  precoAcao  *  100                  println(custoTotal)          }  }  !if  let  precoAcao  =  encontraAcao("Apple")?.preco  {          let  custoTotal  =  precoAcao  *  100          println(custoTotal)  }

Page 24: iOS 8 com swift

VALORES PADRÃO (DEFAULT)

• Podem ser usados em parâmetros para torná-los opcionais

func  adiciona(x:Float?,  y:Float?,  z:Float  =  0.0)  -­‐>  Float  {     return  x  +  y  +  z  }

Page 25: iOS 8 com swift

CLASSES

class  Ponto  {          var  x  =  0.0          var  y  =  0.0  }  !var  ponto  =  Ponto()  !ponto.x  =  100  ponto.y  =  200

class  Ponto  {            var  x:  Float          var  y:  Float  !        init(x:  Float,  y:  Float)  {                  self.x  =  x                  self.y  =  y          }  }  !var  ponto  =  Ponto(x:  100,  y:  200)

Page 26: iOS 8 com swift

HERANÇAclass  ClasseMae  {          func  fazAlgo()  {                  println("Olá  da  Classe  Mãe")          }  }  !class  Subclasse:  ClasseMae    {          override  func  fazAlgo()  {                  super.fazAlgo()                  println("Olá  da  Subclasse")          }  }

Page 27: iOS 8 com swift

PROTOCOLOS• Funcionam como interfaces em outras linguagens

• Mas podem ter a implementação opcional protocol  Miravel  {          var  vida:  Int  {  get  set  }          func  tomarDano(dano:  Int)  }  !protocol  Atiravel  {          func  atirar(alvo:  Miravel)  }

Page 28: iOS 8 com swift

PROTOCOLOS

class  Pistola:  Atiravel  {          func  atirar(target:  Miravel)  {                  alvo.tomarDano(1)          }  }  !class  Rifle:  Atiravel  {          func  atirar(alvo:  Miravel)  {                  alvo.tomarDano(5)          }  }

Page 29: iOS 8 com swift

PROTOCOLOSclass  Inimigo:  Miravel  {          var  vida:  Int  =  10  !        func  tomarDano(dano:  Int)  {                  vida  -­‐=  dano                  println("inimigo  perdeu  \(dano)  pontos  de  vida")  !                if  vida  <=  0  {                          println("o  inimigo  está  morto  agora")                  }          }  }

Page 30: iOS 8 com swift

PROTOCOLOS

class  Jogador  {          var  arma:  Atiravel!  !        init(arma:  Atiravel)  {                  self.arma  =  arma          }  !        func  atirar(alvo:  Miravel)  {                  arma.atirar(alvo)          }  }

Page 31: iOS 8 com swift

EXTENÇÕESprotocol  protocoloExemplo  {          var  descricao:  String  {  get  }          mutating  func  ajuste()  }  !extension  Int:  protocoloExemplo  {          var  descricao:  String  {                  return  "O  número  é  \(self)"          }          mutating  func  ajuste()  {                  self  +=  42          }  }  !7.descricao