Criando um app para iOS com Swift

Introdução

Se você trabalha ou gosta do mundo Apple ou desenvolvimento de sistemas provavelmente já ouviu falar sobre Swift. Se não ouviu também não tem problema. Iremos contar uma breve história sobre ela. Swift é uma linguagem de programação recente para aplicativos iOS, OS X, watchOS e tvOS criada pela Apple. Foi apresentada ao mundo em 2014 na WWDC (Conferência de Desenvolvimento Mundial da Apple), com o propósito de ter todas as vantagens e benefícios do Objective-C, porém sem a complexidade do C.

Além de amigável para novos programadores, ela tem algumas funcionalidades como o Playground, permitindo que o desenvolvedor faça o código e veja o resultado na hora, sem a necessidade de compilar todo o projeto e testar. Só para fazer um paralelo com o nosso mundo aqui da Touch Health, um dos nossos projetos mais complexos demora em média 15 minutos para compilar e mais 5 para testar. Ou seja, em 12 compilações e testes iríamos economizar 2 horas.

E em dezembro de 2015 a Apple tornou open source junto com o lançamento da versão 2.2, e desde então vem crescendo e se popularizando.

Características

Ponto e Vírgula — Poluidor para uns e salvador para outros

A primeira coisa que devemos destacar é a não obrigatoriedade do uso do ponto-vírgula. Para quem trabalha com outras linguagens que já é obrigatório isso não é muito relevante. Mas para quem está começando, ele se torna desagradável.

Variáveis

Em Swift, não é necessário especificar o tipo da variável ao criá-la, pois à partir da primeira atribuição de valor o seu tipo é identificado. Vale lembrar que como em qualquer outra linguagem o tipo não pode ser alterado. Para variáveis podemos usar dessa maneira:

E para constantes só trocamos o var por let:

Tipos de Variáveis

Algo que não agradou muitos desenvolvedores foi a tipagem extrema. Se declarar por exemplo Int e receber um valor Int32 será lançada um Exception.

O Projeto

Vamos desenvolver um aplicativo para calcular a taxa de IMC, onde o usuário deverá informar sua altura, peso, idade, e em outra tela iremos mostrar o resultado.
Usaremos alguns conceitos iniciais básicos:

  • Validação de campos
  • Mensagem/Alerta
  • Transição de Tela

Desenvolvimento

Ambiente de desenvolvimento

O ideal é ter um Mac (Book, Mini, Pro), mas desde que o Swift é Open Source, isso não é mais obrigatório. A principal IDE para Swift é o Xcode, da própria Apple, e que só está disponível para OS X. Existe uma outra IDE, AppCode da JetBrains (Conhecida pela famosa IDE IntelliJ), porém ainda só roda no OS X e é paga.

Já quem usa Linux uma boa alternativa é o Atom. Existe 3 plugins para turbiná-lo com Swift:

Para esse artigo, iremos utilizar o Xcode.
A instalação tanto do Xcode quanto do compilador Swift para Linux são bem simples e existe um passo-a-passo aqui.

Criação do Projeto

Definição do Projeto

No Xcode vá em File > New > Project (⇧⌘N) e escolha a opção iOS > Application > Single View Application (Conforme Figura 1.0).

Figura 1.0

Na tela de definições do projeto, preencha conforme informações abaixo (Figura 1.1):

  • Product Name: CalcularIMC
  • Organization Name: Nome da Sua Conta Apple Developer
  • Organization Identifier: (Deixe como está)
  • Language: Swift
  • Devices: iPhone
  • E deixe as opções (somente Core Data desmarcado) conforme padrão.
Figura 1.1

Em seguida escolha uma pasta para salvar.

Com isso seu Xcode deve ter essa cara (Figura 1.2):

Figura 1.2

Protótipo

Após configurar e iniciar o projeto, vamos criar os protótipos das tela. Para isso abra o arquivo Main.storyboard.

Adiciona os seguintes componentes conforme imagem abaixo (Figura 1.3).

Figura 1.3

Em seguida, crie um novo arquivo em File > New > File (⌘N) e escolha iOS > Source Cocoa Touch Class. Depois ajuste as propriedades conforme imagem (Figura 1.4):

Figura 1.4

Codificação

Agora que já definimos e criamos as telas do app, precisamos dar funcionalidade a elas.

Para isso, é necessário abrir o arquivo ViewController.swift

No início da classe adicione as seguintes variáveis:

Feito isso, vamos ajustar os nomes e referências dos campos. Na view principal:

Figura 1.5

Lista com o nome dos campos TextField’s:

  • Nome Completo: textFieldNomeCompleto
  • Altura: textFieldAltura
  • Peso: textFieldPeso
  • Idade: textFieldIdade

Vamos ajustar o nome da componente Segue que irá fazer a transição de tela. Para isso, abra o Main.storyboard, selecione o Storyboard, em seguida no Attributes Inspector, ajuste a propriedade Identifier para: segueTelaResultados.

Agora ajuste os nomes e referência dos componentes Label da View “Tela de Resultados View Controller”:

Figura 1.6

Componentes Label:

  • Olá Nome Completo: labelNomeCompleto
  • valorIdade: labelValorIdade
  • resultado: labelResultado

Agora vamos configurar as ações dos botões. Primeiro vamos configurar a ação do botão “Limpar todos os campos”.

Figura 1.7

Com isso, escreva o código que irá limpar todos os campos.

Após configurar a função que irá limpar todos os campos, vamos configurar a função para exibir um alerta.

Agora vamos configurar a ação do campo que irá realizar o cálculo. Vamos primeiro adicionar ação ao botão.

Figura 1.8

Agora, vamos escrever o código para realizar o cálculo.

No código acima, o guard antes da definição da constante é parecido com o if, com a diferença que se a condição for diferente da definida ele não permite a continuação do código. Outro ponto no código, é que em Swift os valores dos campos Text Field são considerados sempre NSString, por isso é necessário converte-los para o formato desejado.

O código acima valida se todos os campos não estão vazios, e se não estiverem faz o calculo do IMC e em seguida passa os valores para as variáveis globais.

Nesse momento você já deve conseguir executar o app e realizar o cálculo, porém os valores não são passados para a outra tela e ela também não é chamada. Para isso, é necessário adicionar as seguintes variáveis na classe TelaResultadosViewController:

Feito isso, na função viewDidLoad() da classe TelaResultadosViewController adicione o seguinte código:

Com isso, ao carregar a view TelaResultadosViewController os valores são recebidos da outra view, e passados para os componentes Label com o resultado.

E no botão Voltar adicione a uma ação com o seguinte código:

Agora precisamos adicionar a função para chamar a view TelaResultados e passar os valores. Adicione no final da classe ViewController:

Por fim, no final do método calcular adicione o seguinte código:

Pronto!! Nosso app já está funcional. Mas ainda tem alguns detalhes que não só irão interferir na usabilidade mas também podem fazer o usuário a desistir de usar no app.

Se executar o app no Simulador irá perceber que ao iniciar a digitação, e depois clicar fora do campo de texto o teclado não irá desaparecer. Isso porque esse método não foi configurado. Então basta adicionar os seguintes métodos no final da classe ViewController.

Agora sim!! Temos nosso primeiro aplicativo para iOS desenvolvido em Swift. Utilizamos alguns conceitos básicos nesse App, mas que são essenciais para qualquer app.