Estruturas de repetição em Swift

Bom pessoal vamos começar com mais um post sobre o Swift, assim como o ultimo post onde falei sobre estruturas condicionais neste post vamos falar sobre outro recurso extremamente importante para a programação estruturas de repetição os nossos famosos laços.

A principio, o que é um laço?
A ideia básica é criar um pequeno bloco de código que colocamos para se repetir enquanto a condição for verdadeira.

E quais os tipos de laços que existem e quais suas diferenças?

Dentro do Swift temos 4 tipos de laço:

O laço While (enquanto) a estrutura básica dele é a seguinte:

while (condições){
    // códigos que será executado
}

Ou seja, enquanto minha condição for verdadeira, o bloco de código será executada, porem tome cuidado com as condições que você cria para executar laços por exemplo se você cria uma condição 1 < 2, o código será executado infinitamente afinal 1 sempre será menor que 2.

Vamos criar um pequeno exemplo agora:

var teste: Int = 0;
while repetições < 3 {
    println("Nosso laço se repetiu:\(teste+1)");
    teste++;
}

Execute esse código e veja o que acontece em seu terminal, para fazer alterações no número de vezes que ele será executado podemos simplesmente alterar a condição;

Outro laço que podemos usar com Swift é o laço Do-While, ( que significa faça enquanto ) sua estrutura não diferencia muito do while, porem ele tem uma peculiaridade bem interessante ele executara seu bloco de código pelo menos uma vez:

Vamos explicar melhor com nosso exemplo, vamos criar um array que representara o carros em vagas de um estacionamento, cada vaga será equivalente a uma posição no array, e em cada posição um carro, (ok, ok, nesse exemplo temos que usar MUITO a imaginação mas vamos la).

//Nosso estacionamento, lembre-se de usar a imaginação
var carros = ["Ferrari", "Gol", "Fusca", "Fiat 147"]
var contador: Int = 0
do {
    println("Esse é meu carro?")
    contador++;
    if(carros[contador] == "Fusca"){
        println("Achei meu carro")
    }
} while carros[contador] != "Fusca"

Nesse exemplo, nós percorremos um array verificando cada carro, se esse carro que tem nessa vaga é o nosso, e diferente do while nós executamos toda a verificação pelo menos um vez, para então verificar se a condição nos permitiria executar o bloco novamente.

Vamos o laço For agora, esse laço faz exatamente a mesma coisa que um laço while, sua principal diferença é sua estrutura enquanto o laço while você precisa declarar uma condição de incremento em no meio de seu bloco, com o laço for você pode fazer isso tudo em uma única linha, sua estrutura básica funciona assim:

for (inicio, condição , incremento){
  // código
}

O interessante é que podemos por exemplo declarar uma variável no meio do comando for, por exemplo:

for(var contador: Int = 0; contador < 10; ++contador) {
    println("Nosso laço foi executado");
}

E apor fim nosso ultimo laço o For-in esse que tem propriedades muito interessantes, por exemplo podemos mandar ele percorrer um array de maneira MUITO mais simples que com os outros laços, vamos voltar a nosso array de carros, digo nosso estacionamento.

var carros = ["Ferrari", "Gol", "Fusca", "Fiat 147"]
for carro: String in carros{
    println(carro)
}

Nesse laço nós percorremos o array mostrando todos os valores dele no caso mostrando todos os carros dele.

Espero que esse post tenha ajudado alguém, foi bem curto, porem tem um conteúdo bem interessante para quem está aprendendo a programar, e se você gostou deste post, de uma olhada no ultimo onde eu falei sobre estruturas de condição.

Dicas para desenvolvedores de sites

Fala galera!

Hoje vamos ver algumas dicas para otimização do seu tempo ao desenvolver um site, mas de uma forma que facilite para você, desenvolvedor. Vamos estudar algumas “boas maneiras“ na hora de criar seu projeto.

Estrutura de diretórios

Um projeto bem organizado facilita (e muito!) quando se precisa alterar algum arquivo do site. E o primeiro passo é estruturar os diretórios.

Basicamente, um site possui, além das páginas, arquivos CSS para formatação de estilos, arquivos Javascript para alguns recursos visuais e complementos para praticidade, imagens e arquivos diversos (por exemplo, arquivo de upload). Caso você utilize alguma linguagem de programação, é uma boa dicas é manter também um diretório para os arquivos de conexão ao banco de dados e biblioteca de funções, e um diretório para os arquivos da administração do site.

Note na imagem abaixo a estrutura de diretórios de um site que utiliza folhas de estilo CSS, arquivos Javascript e linguagem de programação PHP para gerenciamento do site.

Estrutura de Diretórios

  • admin – arquivos da administração do site;
  • arquivos – arquivos de upload;
  • css – folhas de estilo
  • imagens – imagens utilizadas no site (pode também ser subdividido)
  • js – arquivos javascript
  • php – arquivos de conexão com banco de dados e biblioteca de funções

DICA: Particularmente, também crio um diretório chamado _FONTES, onde guardo todas os arquivos fonte do projeto. (imagens em alta resolução, arquivo do Corel, etc.)

Include de arquivos

Uma ótima técnica para agilizar o desenvolvimento é utilizar include de arquivos para áreas comuns do site. Isso acontece em praticamente todos os frameworks disponíveis.

Se o seu site mantém as mesmas informações do cabeçalho, não é necessário dar um “Ctrl C Ctrl V” em todas as páginas. Basta montar um único arquivo, e utilizar a função “include()” (no caso do PHP) para chamar esse arquivo.

Include

Neste exemplo, a linguagem de programação é o PHP. A função include() foi utilizada para chamar o arquivo header.php, que contém todas as informações do cabeçalho do site. No caso do PHP, existem também as funções include_once(), require() e require_once(), cada uma com suas particularidades. Em outras linguagens, as funções podem ser diferentes, com sintaxes diferentes.

IMPORTANTE: lembre que no include de arquivos, TODO o conteúdo é “adicionado” na página que o chamou. Se no arquivo do include você fechar a tag html, poderá ter problemas. É recomendado manter apenas os elementos do cabeçalho, sem as tags <html>, <head>, <meta>, etc.

Biblioteca de funções

Como citado na dica anterior, caso você utilize programação é extremamente útil ter um arquivo que armazena todas as funções utilizadas no sistema. Dessa maneira, não será necessário copiar o código para as páginas onde a mesma será utilizada.

Dúvidas (PHP)

  • Se eu alterar o conteúdo de um arquivo que é chamado pela função include(), preciso atualizar todos os arquivos que chamam ele?
    Não! E esse é a grande sacada do include. Basta você alterar o arquivo de include, que todas as outras páginas serão atualizadas automaticamente (porém, caso você altere o nome do arquivo, será necessário trocar todas as linhas de código do include()).
  • Posso utilizar um “include()” dentro do outro?
    Sim. Não existe limitação para tal. Apenas cuidado para não se perder nos includes.
  • Qual a diferença entre include(), require(), include_once() e require_once()?
    include(): tenta incluir a página indicada. Caso não consiga, retorna um WARNING e continua a execução do script. Aceita parâmetros GET.
    require(): o mesmo do include(), porém caso não consiga, gera um FATAL ERROR e aborta a execução do script. Não aceita parâmetros GET.
    include_once() e require_once(): idênticas as funções simples, porém se o arquivo em questão já foi referenciado anteriormente, retorna false e não inclui novamente.
    → Mais informações em PHP.Net
  • Existe algum limite para include de arquivos?
    Não. Não existe limitação para tal. Apenas cuidado para não se perder nos includes.

Caso tenha mais alguma dúvida ou dica, deixe nos comentários!

Nos próximos posts, vamos listar algumas funções básicas em PHP para salvar na biblioteca de funções. Não percam!

Estruturas condicionais com swift

Bom pessoal, vamos a mais um post sobre o desenvolvimento de IOS, como meu último post ficou um pouco grande vou tentar ser um pouco mais sucinto nesse. Este post vai tratar de um assunto simples, porem extremamente importante para a programação como um todo não só para o desenvolvimento mobile, vamos trabalhar com as estruturas condicionais.

Bom antes de tudo, o que são estruturas condicionais ?

Quando estamos programando alguma coisa, em praticamente 100% dos códigos nós precisamos usar um if, quando usamos esse tipo de código nós estamos falando para o computador, olha SE a condição que eu falei foi cumprida, faça tal coisa. Temos também outros códigos que podemos usar junto como o caso do else, esse código usamos logo depois de um IF ele quer dizer que se a condição para executar o if não for cumprida, deve ser feito o que temos dentro das chaves ( { } ) de nosso else. Feita essa breve introdução vamos programar um pouco.

Inicie um novo projeto Swift, não vamos usar nenhum recurso visual, então vamos criar um novo, em linhas de comando apenas para demonstrar nossos exemplos.

Tela de criação de projeto swift
Tela de criação de projeto swift

Para começar precisamos criar uma variável para testar nosso sistema de condições, vamos criar uma variável do tipo inteiro, vou chama-la de idade, e vou atribuir a ela o valor 18.

var idade = 18;

Imagine agora que estamos fazendo um sistema para verificar se uma pessoa pode entrar em nosso bar, porem para entrar em nosso bar é preciso ter 18 anos ou mais, então vamos fazer uma condição, se a idade for maior ou igual a 18 ele pode entrar, e como ficaria isso em swift?

if(idade >= 18){

    println(“A pessoa pode entrar”)

}

Porém, e se a pessoa não for maior de idade? Para isso usamos nossa comando Else, nosso código fica da seguinte maneira.

var idade = 18;

if(idade >= 18){

    println(“A pessoa pode entrar”)

}else{

    println(“A pessoa não pode entrar”)

}

Mas e ai, o que significa esse >= que usamos em nosso código, bom eles são nossos operadores condicionais, normalmente usamos 6 deles:

X > Y onde nosso X é maior que nosso Y

X < Y onde nosso Y é maior que nosso X

X >= Y onde X é maior ou igual a nosso Y

X <= Y onde X é menor ou igual ao nosso X

X == Y onde nosso X e nosso Y são iguais (Lembrando que usar =, == e === são diferentes, se usamos apenas 1 = estamos atribuindo um valor a outro, == quer dizer que estamos comparando um valor ao outro, e o === estamos comparando um valor ao outro, e também estamos comparando o tipo da variavel).

Vamos treinar um pouco as comparações e fazer uma série de ifs testando as condições, para isso vamos criar 2 variáveis do tipo inteiro, e atribuir um valor a cada uma.

var x = 10

var y = 9

if(x>y){

    println(“X é maior que y”)

}else{

    println(“Y é maior que X”)

}

if(x>=y){

    println(“X é maior ou igual a y”)

}else{

    println(“Y é maior ou igual a X”)

}

 

if(x==y){

    println(“X é igual a Y”)

}else{

    println(“Y é igual a X”)

}

if(x===y){

    println(“X e Y tem valores Igual, e o mesmo tipo”)

}else{

    println(“X e Y tem valores diferentes ou tipos diferentes”)

}

com esse trecho de código podemos ver uma série de comparações, usando if/else, esse tipo de comparação pode ser feita com condições mais complexas, por exemplo uma equação, vamos criar outras 2 variáveis do tipo inteiro, e faremos o seguinte.

var y = 10

var z = 15

 

if((y*z) > 100){

    println(“A multiplicação de y e z é maior que 100”)

}else{

    println(“A multiplicação de y e z é menor que 100”)

}

Notem que para que nossa equação seja feita antes da comparação, a colocamos dentro de parênteses, assim o compilador faz a multiplicação dos dois valores e então a comparação.

Porem não precisamos fazer necessariamente fazer a comparação entre 2 valores inteiros, podemos usar exemplos boleanos por exemplo.

Então vamos la em mais um exemplo, criando uma variável do tipo boleano, e vamos atribuir um valor verdadeiro a ele (true).

var a = true

if (a == true){

    println(“o valor de a é verdadeiro”)

}

E por fim temos um ultimo tipo de comparação muito interessante podemos fazer comparações mais interessantes usando operadores lógicos(|| e &&), vamos a mais um exemplo com 2 variáveis do tipo Boleano.

var v1 = true

var v2 = false

if(v1 || v2 == true){

    println(“o valor de v1 ou v2 são verdadeiros “)

}else{

    println(“Nenhum dos valores é verdadeiro”)

}

Para esse tipo de comparação usamos || ou &&.

x || y quer dizer que o valor x OU que o valor y tem que atender a condição

x && y quer dizer que o valor x E que o valor y tem que atender a condição

Bom pessoal por hoje é isso, esse post ficou bem mais curto que o anterior, mas ainda apresenta um conteúdo muito interessante, e muito importante para quem está aprendendo a programar. Todo o código que usamos em nosso projeto está disponível para Download aqui.

Caso queira aprender mais sobre o Swift acesse este link onde falamos mais sobre a linguagem.

Erro 404: Faça o error 404 trabalhar pra você

O que é o Error 404?

O que você procurava simplesmente sumiu?  Error 404! O error 404 nada mais é que a resposta de uma requisição ao servidor dizendo que a página não foi encontrada. Confira algumas dicas para lidar com o error 404 ao seu favor.

Dicas de como utilizar o erro 404 a seu favor

  • Identifique os erros mais freqüentes;
  • Identifique quais conteúdos o usuário procura e você ainda não disponibilizou;
  • Um crawler nunca indexa uma página com 404, ou seja páginas com esse tipo de erro não são indexadas; #FicaDica
  • Redirecione velhos produtos, para uma página com produtos relacionados ao invés de um 404 😉 ;
  • Páginas 404 estão presentes nos melhores sites;
  • Podem ser causadas por erros de digitação do usuário;
  •  Customize sua página 404;

Dicas para customizar a sua página 404

  • Siga o padrão do seu layout, mostre ao usuário que ele continua no seu site na hora de configurar a sua página 404;
  • Coloque links de navegação para que ele possa voltar ao conteúdo do site;
  • Coloque um campo de busca para que possa procurar algo relacionado ao que não encontrou da primeira vez;
  • Coloque um pequeno texto no inicio dessas páginas, pedindo desculpas;
  • Sugira conteúdos do seu site relativos ao que o usuário está buscando;

Flat Design – Nova tendência da web

Fala galera!

Vamos continuar nossa série sobre criação de sites, falando um pouco sobre flat design.

O que é flat design?

Flat design (design plano, traduzido para o português) nada mais é do que criar interfaces simples para sites, passando uma ideia de clareza. Seus elementos possuem uma aparência “clean”, sem muitos detalhes, e com cores vibrantes, porém sem muito brilho. Não utiliza detalhes, como sombras, bordas, gradientes, etc.

Pontos importantes

O conceito do Flat design é simplicidade através de formas planas sem perspectivas de profundidade. Basicamente, segue aquela velha frase: “Menos é mais”.

O sucesso deste tipo de layout se baseia nas cores utilizadas, e muitas vezes na tipografia. A ideia principal parte da hierarquia na concepção e colocação dos elementos para facilitar a interação com o usuário. Em telas pequenas, uma interface plana se torna mais fácil e prática de usar, utilizando menos botões e opções.

Outro ponto a ser considerado é que essa técnica se ajusta perfeitamente em layouts responsivos.

Alguns exemplos de Flat design

Existem vários sites que já adotaram essa técnica de desenvolvimento de layout. Vamos citar alguns exemplos para ilustrar a ideia principal do flat design. Veja nas imagens abaixo:

Flat Design - Google Now
Google Now

Flat Design Windows 8
Windows 8

Flat Design - Superplayer
Suplerplayer

Flat Design - YESbr
O próprio site da YESbr

E o que vem depois?

Atualmente, esse conceito está se tornando base para os sistemas operacionais, sendo que a Microsoft o aderiu nas versões do Windows 8, a Google implementou essa técnica no novo Android L e a Apple atualizou seu novo sistema operacional com o flat design.

Com a onda do modernismo atual, essa técnica se tornará uma tendência, mas logo menos os designers irão introduzir cuidadosamente dimensionalidades e novas maneiras de se estilizar um layout. Novos padrões surgirão, e o flat design vai acabar ficando para trás, infelizmente.

Até a próxima, pessoal!

Construção de tabelas com Objective-C e Swift

Bom pessoal vamos começar mais um tutorial no blog e dessa vez vamos falar sobre um dos recursos mais interessantes e mais usados para os aplicativos móveis, as tabelas e para isso vamos fazer da seguinte maneira como ainda temos usuários que estão programando Objective-C e aqueles que ja estão começando no Swift então vamos mostrar como criar o mesmo aplicativo em Objective-C e em Swift. Antes de montar o projeto em si vamos explicar um pouco sobre arrays. Os arrays são um tipo variável, que podem armazenar mais de uma valor, o conceito pode ter ficado meio confuso, então vamos tentar explicar de maneira diferente. Digamos que nossa memória seja um conjunto de caixas onde você pode armazenar vários objetos (nossa variáveis) agora digamos que dentro de uma caixa você  coloque uma pasta de documentos nessa pasta teríamos variais folhas, esta pasta seria nosso array. Agora voltando ainda para a area de computação. podemos dizer que armazenamos um conjunto de valores em uma variável,  e está variável vai para a memória.(isso pode variar de linguagem para linguagem, mas normalmente arrays só suportam um tipo de variável, ou seja se você colocou uma variável do tipo inteira, na primeira posição todos os outros valores do array tem que ser inteiros.). Se ainda ficou alguma duvida, acesse este link

Documentação Objective-C

Neste link temos a documentação da apple, sobre variáveis, em Objective-C, e no link a baixo, temos a documentação para Swift

Documentação Swift

Vamos a programação, primeiramente vamos ao conceito, vamos criar um app em Objective-C bem simples, você vai criar 2 telas, uma para inserir dados no array, e a outra que será a tabela propriamente dita, e também vamos colocar o botão para retirar dados da tabela.

imagem1

 

Primeiramente vamos ao Xcode, e vamos criar um novo projeto, mas ele será um pouco diferente do modelo padrão de uma única tela como criamos normalmente, vamos criar dessa vez um Tabbed Application, crie o novo projeto e salve onde quiser, vamos explicar a diferença entre o Single View e o Tabbed. O single view como o nome diz, é uma view em branco pronta para você alterar a vontade, enquanto o tabbed vem com estrutura diferente ele  tem 2 telas, uma normalmente usada para inserir os dados e outra onde temos a tabela propriamente dita.

imagem 2

Bom como vamos criar apenas um exemplo simples, vamos fazer da seguinte maneira, crie um NSMutableArray dentro da FirstViewController (como o nome deixa, um pouco óbvio, é a primeira tela a ser carregada), como estava sem criatividade, vamos fazer um tabela sobre nome de carros, então vamos criar um array chamado, nomeCarros, lembrando que você pode dar o nome que quiser para seu array. Dentro das linguagens da apple temos o MutableArray, e o Array padrão vamos a diferença básica entre eles, o array mutável (NSMutableArray) pode ser alterado durante a execução do código, ou seja podemos inserir e retirar dados do array durante todo o código, ja um array padrão não podemos. Explicado isso vamos continuar, embora nós pudéssemos simplesmente criar um array estático e e mostrar em uma tabela, mas ai qual seria a graça? vamos fazer um formulário simples para inserir os nomes na tabela(vocês ja devem ter percebido que hora eu falo inserir dados no array, hora eu falo em inserir dados na tabela, isso foi intencional, e agora vamos explicar o porque as tabelas pegam seus dados direto do array.), continuando o formulário vamos colocar apenas um campo para o texto, e um botão para inserir as informações; Lembrando que  se você estiver usando o Xcode 6 quando você acessa o storyboard suas telas devem estar com tamanhos diferentes de um tamanho padrão de Iphone nesse caso vamos fazer apenas um alteração no nosso projeto selecione uma view qual quer e dentro da aba direita de ferramentas dentro de Identity and Type (o primeiro botão) retire a opção Use Auto Layout  clique em Ok na tela que vai abrir, e pronto suas views ja estão com o tamanho da tela do iphone.

Imagem 3

A tela agora está feita, a minha ficou assim:

imagem 4

Vamos alterar agora nossa Header, não temos muito que fazer nela apenas ligar os objetos da minha tela e criar uma ação para nosso botão, e também criar também uma variável do tipo NSstring. nosso código por enquanto está assim, nada muito complexo, pelo menos por enquanto.

#import <UIKit/UIKit.h>

  NSMutableArray *nomeCarro; NSString *nomeDoCarro;

@interface FirstViewController : UIViewController

@property (weak, nonatomic) IBOutlet UITextField *nome;

  – (IBAction)inserir:(id)sender;

@end

Bomagora vamos começar a programar nosso projeto para inserir os dados no array a primeira coisa a se fazer é iniciar nosso array, para isso vamos dentro de nosso ViewDidLoad (dentro de nosso arquivo .m) e então vamos fazer o seguinte código: – (void)viewDidLoad {

    [super viewDidLoad];

    nomeCarro = [[NSMutableArray alloc]init];

  }

Com este código temos um array pronto para uso, vamos agora a a nossa ação para inserir os dados em nosso array da tabela.Dentro do Action que criamos vamos fazer o seguinte código.

– (IBAction)inserir:(id)sender {

    nomeDoCarro = _nome.text;

    [nomeCarro addObject:nomeDoCarro];

    [_nome resignFirstResponder];

  _nome.text = @””;

    NSLog(@”%@”,nomeCarro);

}

Vamos explicar agora como funciona este código, a primeira linha diz que nossa variável do tipo String é igual ao valor do nosso campo de texto. Ja na segunda linha ela é a chave de toda ação ele com ele basicamente nós falamos, olha pegue o array nomeCarro e inseria o objeto nomeDoCarro(nossa variável). Nossa terceira linha é um dos códigos mais interessantes ele abaixa o teclado, o que pode ser muito util. ja as próximas duas linhas não são necessárias, mas são interessantes de analisar na quarta linha nós limpamos o campo de texto, ou seja a cada nova entrada de dados o campos de texto já esta pronto para ser preenchido novamente, enquanto a ultima linha nos mostra pelo terminar do Xcode, qual todos os valores do Array, ou seja podemos testar ver se está tudo funcionando. E com isso terminamos nossa primeira tela, vamos para a parte principal do projeto, nossa tabela, que por incrível que pareça é mais simples de se fazer do que as pessoas que estão iniciando na linguagem acham, para isso vamos para nossa SecondView, nela onde vamos criar a tabela. A primeira coisa que vamos fazer é criar uma tabela, arrastando nosso componente la no mesmo esquema que fizemos com o campo de texto,porem agora nossa tabela tem um diferencial devemos conectar a nosso Delegate e nosso DataSource, para isso clique com o “botão direito” no componente tabela ligue ao delegate e o DataSource basicamente, para saber que esta conectado quando ele fica com uma “bolinha” do lado do método, isso mostra que estamos conectados, vamos a nossa programação.

imagem 5 imagem 6

Temos 3 métodos principais para nossa tabela, lembrando que para acessar os dados de nosso array que esta em outra classe antes precisamos importar essas informações esse tipo de conceito, estudamos em orientação a objeto, que não posso explicar nesse post, pois ele ja esta muito grande, podemos deixar para outro post, para este basta saber que para acessar as informações de outra classe você precisa importava, para importar isso voltemos nosso arquivo .h da segunda view e coloque essa linha de código:

#import “FirstViewController.h”

Com isso é como se todo o código que temos em FirstViewController podem ser acessados na nossa segunda tela. Bom voltando aos métodos da nossa tabela, quando construímos uma tabela, temos 3 métodos essenciais,(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

Por enquanto não vamos mexer muito nele. (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

Ja com esse método, nós retornamos o “Tamanho de nossa tabela“ Por fim com esse método nós montamos nossa célula.

(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

Esse são os 3 métodos que precisamos para trabalhar com tabelas, agora vamos nos aprofundar um pouco mais em cada uma, e vamos mostrar o código para nossa tabela funcionar.

– (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{

return 1;

}

– (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{

return [nomeCarro count];

}

Esses são os 2 primeiros métodos que vimos, não temos muito o que explicar agora, mas vale lembra que no segundo método, ele define o numero de linhas da tabela, o problema de colocar um tamanho fixo por exemplo 5, se formos tentar colocar um 6 valor, teremos um erro de memória, pois o programa tentaria colocar mais valores no array do que sua capacidade total, então o que fazemos é colocamos o count do array que “comanda“ a tabela, isso diz que, a o tamanho da tabela é igual o tamanho do meu array, logo não teremos erro. Agora vamos ao ultimo método, talvez o mais interessante de todos, com ele nós montamos as células de nossa tabela para isso basta colocar o seguinte código: –

(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

static NSString *CellIdentifier = @”Cell”; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == Nil) {

        cell =[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];

    } cell.textLabel.text = [nomeCarro objectAtIndex:indexPath.row];

    [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];

    return cell;

}

Como nós só temos um único campo texto em nosso array, vamos apenas dizer que o campo label de nossa célula vai ser igual ao valor do array isso nós fazemos com o código

cell.textLabel.text = [nomeCarro objectAtIndex:indexPath.row];

com essa linha nós dizemos que o valor do array estará em nossa tabela, linha por linha. Como esse post é um introdutório não vamos nos aprofundar muito mais que isso, e nem explicar como podemos fazer células custodiadas, e agora vamos ao um outro método, este é outro método que podemos usar em praticamente qual quer tabela, afinal nós aprendemos a colocar os dados vamos ver como retirar os dados da tabela agora, para isso podemos resolver com menos de 10 linhas de código, vamos implementar o seguinte método.

– (void)tableView:(UITableView *)table commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

Vamos colocar o código para excluir o valor do array e recarregar a tabela.

[nomeCarro removeObjectAtIndex:indexPath.row];

NSLog(@”%@”,nomeCarro);

[table reloadData];

com essas 3 linhas de código nós retiramos a linha de código selecionada pelo usuário, mostramos como ficou o array, e também recarregamos a tabela, que voltará ja sem o o valor retirado, o Método todo fica assim.

– (void)tableView:(UITableView *)table commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{

    if (editingStyle == UITableViewCellEditingStyleDelete)

    { [nomeCarro removeObjectAtIndex:indexPath.row]; NSLog(@”%@”,nomeCarro); [table reloadData]; }

}

Esse método, faz com que se o usuário selecione a opção de excluir ele retira esse valor do array, e recarrega a tabela com o código reloadData. Com esses 4 métodos simples temos uma tabela simples, porem funcional, o código todo projeto estará disponível para Download.

Agora em Swift

Para aqueles que ainda não sabem o que é o Swift ainda podem dar uma lida rápida em outra postarem nossa nesse link.

Como nosso tutorial está ficando um pouco grande vou tentar ser mais sucinto nessa parte.Vamos iniciar o projeto, usamos o mesmo procedimento que usamos para criar o projeto em Objective-C porem vamos selecionar Swift.

A lógica de nosso projeto será a mesma, porem como estamos com um post um pouco longo ja vamos resumir, e fazer tudo em uma tela nossa layout não vai ficar um dos mais bonitos, mas vamos la .

imagem 7

 

bom o processo para conectar os componentes ao código é o mesmo processo, porem como não temos os arquivos headers, colocamos diretamente ao código swift, vamos precisar primeiramente de 4 componentes,

@IBOutlet var tableView: UITableView

@IBOutlet var nomeCarros : UITextField

var Carros: String[] = []

var carrosString :NSString = “”

Com essas 4 linhas de código nós declaramos 2 variáveis, uma chamada carros, ele será o Array onde vamos salvar os dados, ja o carrosString é uma variável do tipo string, que receberá nosso texto digitado, logo no inicio temos os nossos 2 Outlets nossa tabela, e nosso campo texto, feito isso agora podemos declarar a ação para nosso botão.

Nossa Ação fará o seguinte, vai receber os dados de nosso campo de texto, e depois o insere em uma variável do tipo String,

carrosString = nomeCarros.text

feito isso precisamos inserir os valores no array, essa função pode ser resolvida com uma única linha de código

Carros += carrosString

Essas duas linhas de código são o básico para inserir os dados de um campo texto em um array, porem teremos alguns problemas se apenas fizermos isso em nosso código, não saberemos se os dados, foram realmente inseridos, então para resolver isso, vamos fazer nossa Action ficar assim

@IBAction func InserirDados(sender : AnyObject) {

        carrosString = nomeCarros.text

        Carros += carrosString

println(\(Carros))

nomeCarros.text = “”

        [nomeCarros .resignFirstResponder()]

tableView .reloadData()

}

Bom esse código agora faz o seguinte, quando a ação for chamada, ela pega o valor que temos em nosso campo texto, e o convertemos para uma string e o inserimos no array, tiramos o teclado da tela, limpamos o campo de texto igual fizemos com nosso projeto me Objective-C.

Porem se você tentar executar essa ação teremos um erro, afinal não temos a tabela ainda em nossa tela, nem suas classes, então faremos o seguinte arraste a tabela para nossa view, depois de feito isso ligue ela a nosso outlet chamado tableView.

Agora vamos nossas funções da tabela.

a primeira coisa que precisamos fazer, seria dizer para nosso código que as células de nossa tabela se chama cell, para fazer isso dentro de nossa função viewDidLoad colocamos esse código

self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: “cell”)

assim como em em Objective-C temos algumas classes especificas para nossa tabela, como no Objective-C temos que dizer a quantidade de linhas de nossa tabela para isso vamos criar uma função

func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {

return self.Carros.count;

}

essa função por sua vez retorna uma valor inteiro, que é o tamanho de nosso array

Assim como no Objective temos que montar nossas células, elas são montadas dentro da função cellForRowAtIndexPath, dentro de nossa função precisamos apenas de 3 linhas de código

var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier(“cell”) as UITableViewCell

cell.textLabel.text = self.Carros[indexPath.row]

return cell

Na primeira dizemos que nossa célula vem de nosso objeto tableView, para a célula com nome cell, que declaramos logo no começo do código, ja a segunda linha diz que nosso textlabel é o valor que temos no array para cada linha, lembrando que você pode fazer a célula como bem entender, ou como o projeto precisar, porem a parte de células customizadas fica para uma próxima aula, e por fim retornamos nossa célula para nossa tabela.

Pronto temos agora um projeto simples com tabela e inserir dados em array tanto em Objective-C quanto em swift, lembrando que o ideal seria você escrever os códigos ao invés de copiar, os links para downloads são esses.

Códigos Objective-C

Objective

Códigos em Swift

Swift

Caso ainda não conheça muito sobre o Swift de uma olhada nesse link onde falamos um pouco sobre a linguagem.