XCode 8 e Swift 3

Posted by rlecheta on outubro 23, 2016
iOS, Livros

Olá pessoal

A 4a ed do livro de iOS foi feita utilizando o XCode 7 com Swift 2.
ios
Recentemente foi lançado o Xcode 8 com suporte ao Swift 3.
Para auxiliar os leitores que compraram a 4ed, este post visa explicar algumas das mudanças e também para dizer que atualizei os fontes no github com os exemplos com Swift 3.
Espero que o fonte ajude quem comprar a 4ed e precisar estudar Swift 3.
Para migrar os projetos da 4ed para Swift 3 foi simples. Eu abri cada projeto no Xcode 8 e o próprio Xcode mostrou o wizard para migrar para o Swift 3. Na maioria das vezes deu certo, e quando não funcionou fiz pequenos ajustes.
A figura abaixo mostra o wizard do XCode 8 durante a migração do Swift 2 para o Swift 3. Ele mostra um preview de cada arquivo, portanto eu recomendo que você leia cuidadosamente cada mudança pois é uma ótima maneira de aprender a nova sintaxe.
9-2
Mas o que mudou?
Algumas coisas foram a sintaxe como mostra esse código abaixo.

Swift 2: UIApplication.sharedApplication().openURL(NSURL(string:url)!)

Swift 3: UIApplication.shared.openURL(URL(string:url)!)

Note que a classe NSURL mudou para apenas URL. Isso acontece também com várias outras classes que tinham o prefixo NS.

A seguir temos outro exemplo de código que está diferente:

Swift 2:

self.window = UIWindow(frame: UIScreen.main.bounds)

self.window!.backgroundColor = UIColor.white

Swift 3:

self.window = UIWindow(frame: UIScreen.mainScreen().bounds)

self.window!.backgroundColor = UIColor.whiteColor()

Uma mudança importante foi na forma de declarar os métodos, pois foi adicionado um prefixo “_” opcional no primeiro parâmetro. Digamos que temos uma função soma(n1,n2) com a seguinte declaração.

func soma(n1:Int, n2:Int) -> Int {

   return n1 + n2

}

Par chamar a função você faria algo assim:

let n = soma(n1: 1, n2: 3)

print(n)

Note que é obrigatório informar o primeiro argumento “n1”. Caso você opte por simplificar a chamada e não informar o argumento, basta colocar o “_” antes de declarar o primeiro argumento, assim:

func soma(_ n1:Int, n2:Int) -> Int {

   return n1 + n2

}

Neste caso a chamada ficaria (não precisa informar o n1):

let n = soma(1, n2: 3)

print(n)

Bom, teve várias outras mudanças.. mas o que recomendo é que vocês migrem os projetos de Swift 2 para Swift 3 utilizando este wizard do XCode, pois é um excelente exercício e aprendizado.

Para quem tem a 4ed, recomendo antes estudar no XCode 7, pois assim os exemplos com Swift 2 vão todos funcionar. É possível encontrar versões antigas do XCode procurando no Google por “xcode older versions”. Depois que estudar os códigos do livro com Swift 2, recomendo instalar o XCode 8 e utilizar o wizard de migração para o Swift 3.. Será um bom aprendizado sobre a sintaxe.

É isso pessoal, espero que este rápido post tenha ajudado :-).

19 Comments to XCode 8 e Swift 3

    • Oi Ramon, vou começar a trabalhar na nova edição agora. Creio que no início de 2017 seja lançada. Porém não pretendo mudar nada no livro (pois o livro já é bem completo), e sim apenas atualizar a sintaxe do Swift 2 para Swift 3. Creio que o único capítulo que vou mudar um pouco é o de Push, pois pretendo mostrar o Firebase para iOS.

  • Posso comprar esta edição e começar a estudar usando o Xcode 8? Estou começando agora no Xcode.

    Já programei em C++ mas só na faculdade.

    • Se comprar essa versão estude no iOS 7, pq senao os exemplos nao vao compilar. A nova edicao com Xcode 8 sai em 1 ou 2 meses.

  • Vou esperar pela próxima edição, pois já estou estudando o swift 3. Vou acompanhar teu site, quando sair o livro dá um toque. Seu trabalho é muito elogiado. Obrigado.

  • Ola Ricardo,

    Acredita que ja esse mes seu livro ja esteja disponivel?

    Sou iniciante na linguagem, posso começar ja com seu livro e seu conhecimento como base? ou voce teria outro para os iniciantes?

    Forte Abraço

    • Oi Paulo, tudo bem? O livro já está com a editora faz tempo, acredito que eles estejam revisando ainda. Não sei quando eles pretendem lançar.

  • Boa noite.

    Ricardo, enquanto seu livro não chega, qual livro de Swift 3 e/ou curso você indicaria?

    Obrigado.

    • Oi Peter, livro só conheço o meu mesmo, pois aprendi tudo me.quebrando com o Xocode e vendo os docs da Apple. Sobre apenas a linguagem Swift vc vai encontrar o guia completo no site da Apple.

  • Boa tarde.
    Comprei seu livro sobre android, gostei muito, só não comprei o de swift pois estou aguardando a versão nova sair. Seria interessante ter um local onde os interessados pudessem se cadastrar e receber um e-mail quando lançar, eu compro no mesmo dia.

    Abraço

    • Oi werichinilson, está em falta devido o lançamento da nova edição. Creio que a 5a edição será lançada em breve, já está aparecendo na lista de próximos lançamentos no site da http://novatec.com.br/. Tem que ficar acompanhando… Postarei no facebook, twitter, g+ qdo lançar, abs.

  • Ricardo, de uma aprofundada em core data na próxima edição, a sintaxe mudou bastante e as request não são coisas que vemos na faculdade, muito diferente do sql que estamos acostumados

    • Oi Jorge, não gosto de usar o Core Data. Fiz minha pequena lib em SQLite e me atende bem. Como vc mesmo disse, cada vez muda a sintaxe, a Apple vacila demais. Inclusive removi da nova edição este assunto, abraço.