[Objective-C] Trabalhando com Arrays
Uma array é um objeto que contém coleções de outros objetos. Array em Objective-C são tratados com NSArray. A classe NSArray contém uma série de métodos especificamente projetados para facilitar a criação e manipulação de matrizes. Ao contrário de algumas linguagens de programação orientada a objetos (C # sendo um exemplo), os objetos contidos em uma matriz não têm todos de ser do mesmo tipo.
Tipos de Arrays
Arrays em Objective-C podem ser encontrados de duas maneiras, mutáveis e imutáveis (NSArray, NSMutableArray). O conteúdo dos arrays imutável não pode ser alterado após o array ser iniciado. Arrays são imutáveis quando instanciado da classe NSArray. Array mutável são criadas usando a classe NSMutableArray (uma subclasse de NSArray) e pode ser modificado depois de terem sido criados e inicializados.
NSArray
Show me the code!
NSArray *array = [[NSArray alloc] init];
No código acima criamos um array imutável vazio, e devido a isso não conseguimos adicionar objetos a ele, sempre será um array vazio.
A classe NSArray contém um método de classe chamado arrayWithObjects que podem ser chamados a criar um novo array e inicializá-lo com elementos. Por exemplo:
NSArray *basket = [NSArray arrayWithObjects: @"Apple", @"Banana", @"Pineapple", @"Orange", nil]
Perceba que cada objecto adicionado é separado apenas por virgula (@"Apple", @"Banana",@"Pineapple", @"Orange", nil) e se repararmos o ultimo objeto do array é nil (nulo).
Diferente de outras linguagens devemos colocar nil para que os métodos chamados possam saber onde o fim da array.
NSMutableArray
Podemos criar Arrays mutáveis da mesma maneira que criamos um array não mutável, por exemplo:
NSMutableArray *array = [[NSMutableArray alloc] init];
a diferença é que quando for necessário podemos adicionar objetos a esse array.
[array addObject:@"item 1"];
[array addObject:@"item 2"];
[array addObject:@"item 3"];
...
Uma coisa muito interessante do NSMutableArray é um método chamado insertObject que é seguido do parametro atIndex, ou seja podemos adicionar objetos em nosso arrays em índices determinados por nós.
Por exemplo se eu pegar o array criado acima que contem 3 itens e adicionar
[array insertObject: @"item 10" atIndex:1];
a saída ficaria da seguinte maneira
Item 1 Item 10 Item 2 Item 3 ...A sub classe NSMutableArray é muito poderosa e nos permite trabalhar "livremente" com arrays podendo adicionar e remover objetos. Vamos ver alguns métodos nos exemplos de como remover objetos de arrays.
NSMutableArray *basket = [NSMutableArray arrayWithObjects: @"Apple", @"Banana", @"Pineapple", @"Orange", nil]
removeObjectAtIndex: remove um objeto de um indice específico
[basket removeObjectAtIndex:3];
removeObject remove a primeira instância do objeto passado como parametro
[basket removeObject:@"Apple"];
removeAllObjects remove todos os objetos do array
[basket removeAllObjects];
para saber mais sobre os métodos da sub class NSMutableArray recomendo ver a referência da classe aqui
Espero que tenham gostado do post.
Para galera que esta acompanhando o blog fiquem atentos que em breve teremos grandes novidades.
Abraço