Liberte seu desenvolvedor de aplicativo interno Parte 12: fortalecendo seu código

Você tem uma ideia para um aplicativo, mas não tem o conhecimento de programação para começar a construí-lo? Nesta série semanal de blogs, How to Unleash Your Inner App Developer, vou levar você, o não programador, passo a passo pelo processo de criação de aplicativos para iPhone, iPod touch e iPad. Junte-se a mim a cada semana nesta aventura, e você experimentará como pode ser divertido transformar suas ideias em realidade! Esta é a parte 12 da série. Se você está começando agora, confira o início da série aqui (esta postagem foi atualizada para Swift 1.2, iOS 8 e Xcode 6.3.)

Um dos melhores livros de desenvolvimento de software de todos os tempos é o livro de Steve McConnell Código concluído . Seja você um desenvolvedor de software experiente ou um programador novo em folha, independentemente da plataforma ou linguagem em que você escreve o código, eu recomendo a leitura deste livro. Isso mudará sua maneira de pensar e melhorará muito a qualidade do código que você escreve.



'Agregação de software'—Construindo ao longo do tempo

Depois de ler Código concluído anos atrás, a comparação do livro entre desenvolvimento de software e cultivo de ostras realmente me chamou a atenção. McConnell usou o termo acréscimo de software para descrever o processo de construção de software ao longo de um período de tempo. A palavra 'acreção' refere-se a qualquer crescimento ou aumento de tamanho por uma adição ou acumulação externa gradual. É assim que uma ostra faz uma pérola; adicionando gradualmente pequenas quantidades de carbonato de cálcio ao longo de um período de tempo, uma pérola cresce cada vez mais.

Com o desenvolvimento de software incremental, você começa criando a versão mais simples de um sistema que será executado. Você cria um esqueleto forte o suficiente para manter o sistema real conforme ele é desenvolvido, assim como uma ostra que começa a construir uma pérola com um pequeno grão de areia. Isso é exatamente o que fizemos até agora nesta coluna com o Revisão do iApps aplicativo. Construímos primeiro um protótipo do aplicativo e, gradualmente, ao longo do tempo, adicionamos código a cada semana com o objetivo final de criar um aplicativo totalmente funcional.

Fortalecendo seu código

Como parte do processo incremental de construção de um aplicativo, você precisa dar uma olhada no seu código e fazer a pergunta: 'O que pode dar errado?' Uma das maiores variáveis ​​a serem consideradas são seus usuários. Eles irão surpreendê-lo constantemente usando seu aplicativo de maneiras que você não espera. Trabalhei com algumas equipes de desenvolvimento ao longo dos anos e ainda não vi um caso em que os desenvolvedores não ficaram surpresos ao ver as pessoas usarem seus softwares. Quando se trata de desenvolvimento de aplicativos, é fundamental que você permita que outras pessoas chutem os pneus do seu aplicativo antes de enviá-lo para a App Store. O feedback deles certamente melhorará a experiência do usuário do seu aplicativo.

Vamos dar uma olhada Revisão do iApps , identifique as áreas onde podem ocorrer problemas e, em seguida, fortaleça nosso código para evitar problemas. Você pode obter o projeto que concluímos até agora em esse link . Se você ficar preso seguindo as instruções passo a passo, você pode obter o projeto concluído para este post em esse link .

Como está agora, se o usuário não inserir um nome de aplicativo ou comentários no Escrever análise cena, o aplicativo não trava; mas quando eles tentarem compartilhar a avaliação no Twitter, eles receberão um tweet vazio, exceto pelo hífen, conforme mostrado em figura 1 .

  tweet vazio
Figura 1 - O usuário pode enviar um tweet vazio.

Então, como devemos resolver esse problema? É uma prática recomendada examinar os aplicativos iOS integrados para ver como a Apple lida com uma situação específica e usar isso como um guia para nossos próprios aplicativos. Por exemplo, ao especificar uma conta do Twitter no Definições aplicativo, o Entrar opção é desativada até que o usuário insira um Nome de usuário e Senha ( Figura 2 ).

  Conta do Twitter
Figura 2 - O botão Entrar fica desabilitado até que o usuário insira um Nome de usuário e Senha .

este também é uma boa abordagem para Escrever análise cena. Só queremos habilitar o botão Compartilhar se houver texto em ambos os Nome do aplicativo campo de texto e visualização de texto de comentários. Isso significa que cada vez que o usuário digita um caractere, precisamos verificar os dois controles da interface do usuário. Se um estiver vazio, o botão Compartilhar deve ser desabilitado. Se ambos os controles contiverem texto, o botão Compartilhar deverá ser ativado. Temos que realizar essa verificação para cada caractere que o usuário digitar, pois eles podem pressionar o botão excluir key, deixando um dos controles da interface do usuário vazio.

Criando uma saída de botão de compartilhamento

Como precisamos acessar o botão Compartilhar para habilitá-lo e desativá-lo, nosso primeiro passo é criar uma saída para o botão. Para fazer isso, siga as etapas listadas abaixo.

  1. Abra o Revisão do iApps projeto em Xcode.
  1. No Project Navigator, selecione o storyboard principal Arquivo.
  1. No Escrever análise cena, clique no botão Compartilhar no canto superior direito da cena.
  1. Vá para o Inspetor de Atributos (o terceiro botão à direita na barra de ferramentas do Inspetor) e desmarque o Habilitado caixa de seleção como mostrado em Figura 3 . Isso faz com que o botão Compartilhar pareça desabilitado em tempo de design e quando a cena aparece pela primeira vez em tempo de execução;
  Desmarque Ativado
Figura 3 - Desmarque a Habilitado caixa de seleção.
  1. Em seguida, exiba o Editor Assistente clicando no botão central na editor grupo de botões no canto superior direito da janela do Xcode. Isso deve exibir o WriteReviewViewController.swift arquivo no Editor Assistente.
  1. Segure o ao controle tecla para baixo, clique no botão Compartilhar e arraste para baixo no WriteReviewViewController.swift arquivo como mostrado em Figura 4.
  Saída do botão Compartilhar
Figura 4 - Crie uma saída para o botão Compartilhar.
  1. Quando você vê o Inserir Coleção de Outlet, Ação ou Outlet pop-up, solte o botão do mouse e o ao controle chave. Isso exibe o pop-up Inserir tomada. Digitar btnShare como a saída Nome e depois clique no Conectar botão ( Figura 5 ). Isso adiciona um novo btnShare propriedade de saída para o arquivo de código.
  btnShare outlet
Figura 5 - Crie um outlet chamado btnShare .

Configurando o campo de texto do nome do aplicativo

Agora vamos configurar o Nome do aplicativo campo de texto para ativar e desativar o botão Compartilhar. Primeiro, precisamos criar uma saída que possamos usar para fazer referência ao campo de texto.

  1. Control+Clique no Nome do aplicativo campo de texto na superfície de design e, em seguida, arraste para baixo no WriteReviewViewController.swift arquivo como mostrado em Figura 6 .
  Criar saída de campo de texto
Figura 6 - Crie uma saída para o campo de texto.
  1. No pop-up Create Outlet, defina o Nome campo para txtAppName e clique em Conectar ( Figura 7 ). Isso cria uma nova propriedade de saída chamada txtAppName .
  Crie uma saída
Figura 7 - Digite txtAppName no Nome campo.
  1. Com o Nome do aplicativo campo de texto ainda selecionado, vá para o Inspetor de Conexões (o botão na extrema direita na barra de ferramentas Inspetores). Debaixo de Eventos enviados seção, clique na conexão bem à direita da Valor alterado evento e arraste para baixo no WriteReviewViewController.swift arquivo como mostrado em Figura 8 . o Valor alterado O evento é acionado toda vez que o usuário insere ou exclui um caractere no campo de texto.
  Criar um método de ação
Figura 8 - Crie um método de ação para o Edição alterada evento.
  1. Quando o Inserir ação pop-up aparecer, solte o botão do mouse e o ao controle chave. Isso exibe o pop-up Criar método de ação ( Figura 9 ). Digitar appNameChanged como o método Nome e depois clique no Conectar botão. Isso adiciona um novo método de ação ao WriteReviewViewController.swift Arquivo. Você pode fechar o Editor Assistente agora clicando no botão esquerdo na editor grupo de botões.
  appNameChanged
Figura 9 - Crie um método de ação chamado appNameChanged .

  1. Agora vamos implementar o novo método. No WriteReviewViewController.swift arquivo de código digite o código mostrado em Figura 10 .
  appNameCódigo alterado
Figura 10 - O código neste método habilita e desabilita o botão Compartilhar.

Esta é a primeira vez que mostro esse tipo de código no meu blog, então vou explicar como funciona. Este é um Swift se mais declaração. Pertence a uma família de instruções condicionais e permite executar um conjunto de código ou outro com base em uma condição.

A condição que é verificada por esta declaração segue imediatamente a E se na primeira linha de código neste método. Esta condição específica contém uma comparação composta, onde dois valores são verificados. As linhas verticais duplas entre as duas condições ( || ) é um operador OR lógico. Isso significa que se a primeira condição OU a segunda condição for avaliada como verdadeiro , então o código dentro das chaves diretamente após o E se É executado. Caso contrário, o código contido nas chaves após o senão instrução é executada.

Primeiro, o contar é chamada para verificar se o número de elementos (caracteres, neste caso) do texto no tvwReview control é igual a zero, o que será se a visualização de texto estiver em branco. Se esta parte da condição for verdadeira, então o código que desabilita o botão é executado sem verificar a segunda parte da condição. Não há necessidade de verificar porque se qualquer parte da condição for verdadeira, o botão deve ser desabilitado. Se a primeira parte da condição for verdadeira, a segunda parte da condição será verificada. Se o contar função retorna zero para o texto propriedade do campo de texto, então o código que desabilita o botão é executado.

Se ambas as partes da condição forem falsas, o código na senão A instrução é executada, o que habilita o botão Compartilhar.

Configurando a visualização de texto de comentários de revisão

Agora você está pronto para configurar a visualização de texto de comentários de revisão. Temos que ter uma abordagem diferente com a visualização de texto porque não tem um Edição alterada evento como o campo de texto faz (você pode clicar na visualização de texto na superfície de design e, em seguida, ir para o Inspetor de conexões para ver o que quero dizer).

Como é o caso da visualização de texto, se você não encontrar o evento que precisa com um determinado controle de interface de usuário, seu próximo passo é verificar se o controle possui um protocolo delegado que pode ser adotado para que você possa ser notificado de eventos importantes (veja meu postagem anterior para uma discussão de delegados e protocolos). Se você olhar para o UITextView documentação, você descobrirá que há um delegar propriedade cujo tipo é um protocolo chamado UITextViewDelegate . Este protocolo contém um textViewDidChange: método ( Figura 11 ), que é exatamente o que precisamos. Como a documentação indica, esse método é chamado automaticamente no delegado quando o usuário altera o texto na exibição de texto.

  textViewDidChange
Figura 11 - A textViewDidChange: O método é chamado quando o usuário altera o texto na visualização de texto.

Vamos adotar este protocolo agora.

  1. Não precisamos mais do editor Assistente, então clique no botão à esquerda no grupo de botões Editor para se livrar dele. Em seguida, no Project Navigator, selecione o WriteReviewViewController.swift arquivo de código.
  1. Adicione o código mostrado em Figura 12 adotar o UITextViewDelegate protocolo e lembre-se de adicionar uma vírgula após o UINavigationControllerDelegate protocolo no final da linha de código anterior;
  Adote o protocolo UITextViewDelegate
Figura 12 - Adoção do UITextViewDelegate protocolo
  1. Agora vamos implementar o protocolo. Para fazer isso, adicione o novo e vazio textViewDidChange: método mostrado em Figura 13 diretamente abaixo do appNameAlterado: método.
  Implementar textViewDidChange
Figura 13 - Adicione o textViewDidChange: método.

Linha por linha, precisamos do código no textViewDidChange: método para fazer exatamente o que o código está no appNameAlterado: método está fazendo. Então o que você deveria fazer? Em primeiro lugar, vamos falar sobre o que você deve não Faz.

Um dos maiores erros que desenvolvedores novatos (e infelizmente até mesmo alguns desenvolvedores experientes) cometem é copiar o código de um método e colá-lo em outro. Por que isso é um problema? Um dos seus objetivos como desenvolvedor é evitar a criação de código duplicado. Por quê? Se você tiver que fazer uma alteração no código (e eventualmente fará), isso significa que há mais de um lugar onde você deve fazer a alteração.

Então, o que você deve fazer em vez disso? Você deve dividir o código em um método separado que possa ser chamado de vários lugares em seu aplicativo. É exatamente isso que vamos fazer agora.

  1. Adicionar um novo, vazio isReadyToShare método como mostrado em Figura 14 diretamente abaixo do textViewDidChange: método. Ignore o ícone de erro vermelho na calha à esquerda do código. Você está recebendo este erro porque o -> Bool na declaração do método especifica que este método deve retornar um valor booleano. Como ainda não está, você verá o erro do compilador. Quando terminarmos de adicionar o código, este método retornará verdadeiro se o botão Compartilhar deve ser ativado e falso se não deveria.
  isReadyToShare
Figura 14 - Adicione o novo isReadyToShare método.
  1. Agora, em vez de fazer um cópia de e colar, vamos cortar e cole o código do textViewDidChange: método para o novo isReadyToShare método. Para fazer isso, selecione todo o código no textViewDidChange: método como mostrado em Figura 15 clicando e arrastando da primeira linha de código para a última linha de código no método.
  Selecione todo o código no método
Figura 15 - Selecione todo o código no appNameAlterado: método.
  1. A seguir, digite Comando+X para cortar o código deste método.
  1. Agora clique dentro das chaves do isReadyToShare método e pressione Comando+V para colar o código no método. Quando você terminar, esses três métodos devem se parecer com Figura 16.
  Os três métodos
Figura 16 - O código foi recortado appNameAlterado: e colado em isReadyToShare .
  1. Agora precisamos alterar o código neste método para retornar falso se o botão Compartilhar não deve ser ativado e verdadeiro se deveria. Para fazer isso, substitua o código entre chaves no se mais declaração como mostrado em Figura 17. Observe que também adicionei comentários que explicam como esse método funciona.
  Alterar está pronto para compartilhar
Figura 17 - isReadyToShare retorna NÃO para desativar o botão Compartilhar e SIM para habilitá-lo.
  1. Agora adicione o código mostrado em Figura 18 para o appNameAlterado: e textViewDidChange: métodos. Este código chama o isReadyToShare método no controlador de exibição e armazena o valor retornado no ativado propriedade do botão Compartilhar.
  Chamada estáReadyToShare
Figura 18 - Passe um isReadyToShare mensagem de ambos os métodos.
  1. Há mais um passo que precisamos dar para que isso funcione corretamente. Precisamos armazenar uma referência ao WriteReviewController no delegar propriedade da visualização de texto.

Para fazer isso, vá para o Project Navigator e selecione o Principal.Storyboard arquivo e, em seguida, vá para o Inspetor de Conexão (o botão na extrema direita na barra de ferramentas Inspetores). Clique na visualização de texto na superfície de design para selecioná-la. Em seguida, clique na conexão bem à direita do delegar saída e arraste até o Write Review View Controller ícone no dock acima do Escrever análise cena como mostrado em Figura 19 . Ao soltar o mouse, o delegar tomada e controlador de exibição serão conectados.

  Conecte o delegado
Figura 19 - Conecte as visualizações de texto delegar propriedade para o WriteReviewViewController .

Chutando os pneus!

Agora você está pronto para chutar os pneus e ver como as mudanças que você fez funcionam.

  1. Clique no Corre botão no Xcode e quando o aplicativo aparecer no Simulador, selecione o Escreva uma crítica opção.
  1. Digite o texto no Nome do aplicativo campo de texto primeiro e, em seguida, digite na exibição de texto depois. Observe que assim que você digitar o primeiro caractere na visualização de texto, o botão Compartilhar será ativado!
  1. Tente excluir todos os caracteres em um dos controles e depois no outro para ver o botão Compartilhar ser ativado e desativado.

Cultivando a pérola

Se você estiver criando este aplicativo para um cliente, poderá mostrá-lo a ele para obter algum feedback após adicionar essa nova funcionalidade. Neste ponto, e se o patrocinador lhe disser que uma classificação de zero estrelas não é aceitável (assim como na App Store)? Agora você precisa alterar o aplicativo para garantir que o botão Compartilhar não seja ativado até que uma classificação seja selecionada.

Gostaria que você pensasse no que teria que fazer se tivesse simplesmente copiado o código que verificava um campo de texto vazio e a visualização de texto do appNameAlterado: método e colei no textViewDidChange: método. Agora você teria dois locais onde teria que adicionar um código que verifica se o usuário selecionou uma classificação para o aplicativo! Isto é não o tipo de aplicativo que você deseja criar. É muito melhor fazer o que fizemos neste post e criar um método separado que pode ser chamado a partir do appNameAlterado: e textViewDidChange: métodos, porque há apenas um lugar onde temos que alterar o código.

Conclusão

Criar aplicativos de alta qualidade é uma ciência e uma arte. O esforço que você coloca na criação de um aplicativo bem projetado lhe renderá dividendos muitas vezes durante a vida do seu aplicativo. Eu recomendo que você leia livros como Código concluído para aprender ainda mais ótimas práticas de codificação e aprimorar suas habilidades de desenvolvimento de aplicativos!

< Próximo>>