Armazenamento de dados em Objective-C
O armazenamento de dados e sua recuperação são os mais importantes em qualquer programa. Em Objective-C, geralmente não dependemos de estruturas como lista vinculada, pois torna o trabalho complexo. Em vez disso, usamos coleções como NSArray, NSSet, NSDictionary e suas formas mutáveis.
NSArray e NSMutableArray
NSArray é usado para conter uma matriz imutável de objetos e o NSMutableArray é usado para conter uma matriz mutável de objetos.
A mutabilidade ajuda a alterar o array em tempo de execução de um array pré-alocado, mas se usarmos NSArray, apenas substituiremos o array existente e não podemos alterar o conteúdo do array existente.
Métodos importantes de NSArray são os seguintes
alloc/initWithObjects - Usado para inicializar uma matriz com objetos.
objectAtIndex - Retorna o objeto em um índice específico.
count - Retorna o número de objetos
NSMutableArray é herdado de NSArray e, portanto, todos os métodos de instância de NSArray estão disponíveis em NSMutableArray
Métodos importantes de NSMutableArray são os seguintes -
removeAllObjects - Esvazia o array.
addObject - Insere um determinado objeto no final da matriz.
removeObjectAtIndex - Isso é usado para remover objectAt um índice específico
exchangeObjectAtIndex:withObjectAtIndex - Troca os objetos na matriz em determinados índices.
replaceObjectAtIndex:withObject - Substitui o objeto no índice por um Objeto.
Temos que lembrar que a lista acima é apenas os métodos usados com freqüência e podemos pular para as respectivas classes em nosso XCode para saber mais métodos nessas classes. Um exemplo simples é mostrado abaixo.
#import <Foundation/Foundation.h>
int main() {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSArray *array = [[NSArray alloc]
initWithObjects:@"string1", @"string2",@"string3",nil];
NSString *string1 = [array objectAtIndex:0];
NSLog(@"The object in array at Index 0 is %@",string1);
NSMutableArray *mutableArray = [[NSMutableArray alloc]init];
[mutableArray addObject: @"string"];
string1 = [mutableArray objectAtIndex:0];
NSLog(@"The object in mutableArray at Index 0 is %@",string1);
[pool drain];
return 0;
}
Agora, quando compilarmos e executarmos o programa, obteremos o seguinte resultado.
2013-09-29 02:33:23.195 demo[3487] The object in array at Index 0 is string1
2013-09-29 02:33:23.196 demo[3487] The object in mutableArray at Index 0 is string
No programa acima, vimos uma diferenciação simples entre NSMutableArray e NSArray, onde podemos inserir uma string após a alocação em um array mutável.
NSDictionary e NSMutableDictionary
NSDictionary é usado para conter um dicionário imutável de objetos e o NSMutableDictionary é usado para conter um dicionário mutável de objetos.
Métodos importantes de NSDictionary são os seguintes -
alloc/initWithObjectsAndKeys - Inicializa um dicionário recém-alocado com entradas construídas a partir do conjunto especificado de valores e chaves.
valueForKey - Retorna o valor associado a uma determinada chave.
count - Retorna o número de entradas no dicionário.
NSMutableDictionary é herdado de NSDictionary e, portanto, todos os métodos de instância de NSDictionary estão disponíveis em NSMutableDictionary
Métodos importantes de NSMutableDictionary são os seguintes -
removeAllObjects - Esvazia o dicionário de suas entradas.
removeObjectForKey - Remove uma determinada chave e seu valor associado do dicionário.
setValue:forKey - Adiciona um determinado par de valores-chave ao dicionário.
Um exemplo simples de dicionário é mostrado abaixo -
#import <Foundation/Foundation.h>
int main() {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:
@"string1",@"key1", @"string2",@"key2",@"string3",@"key3",nil];
NSString *string1 = [dictionary objectForKey:@"key1"];
NSLog(@"The object for key, key1 in dictionary is %@",string1);
NSMutableDictionary *mutableDictionary = [[NSMutableDictionary alloc]init];
[mutableDictionary setValue:@"string" forKey:@"key1"];
string1 = [mutableDictionary objectForKey:@"key1"];
NSLog(@"The object for key, key1 in mutableDictionary is %@",string1);
[pool drain];
return 0;
}
Agora, quando compilarmos e executarmos o programa, obteremos o seguinte resultado.
2013-09-29 02:34:50.528 demo[9135] The object for key, key1 in dictionary is string1
2013-09-29 02:34:50.528 demo[9135] The object for key, key1 in mutableDictionary is string
NSSet e NSMutableSet
NSSet é usado para conter um conjunto imutável de objetos distintos e o NSMutableDictionary é usado para conter um conjunto mutável de objetos distintos.
Métodos importantes de NSSet são os seguintes -
alloc/initWithObjects - Inicializa um conjunto recém-alocado com membros retirados da lista de objetos especificada.
allObjects - Retorna um array contendo os membros do conjunto ou um array vazio se o conjunto não possui membros.
count - Retorna o número de membros no conjunto.
NSMutableSet é herdado do NSSet e, portanto, todos os métodos de instância do NSSet estão disponíveis no NSMutableSet.
Métodos importantes de NSMutableSet são os seguintes -
removeAllObjects - Esvazia o conjunto de todos os seus membros.
addObject - Adiciona um determinado objeto ao conjunto, se ainda não for um membro.
removeObject - Remove um determinado objeto do conjunto.
Um exemplo simples para conjuntos é mostrado abaixo -
#import <Foundation/Foundation.h>
int main() {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSSet *set = [[NSSet alloc]
initWithObjects:@"string1", @"string2",@"string3",nil];
NSArray *setArray = [set allObjects];
NSLog(@"The objects in set are %@",setArray);
NSMutableSet *mutableSet = [[NSMutableSet alloc]init];
[mutableSet addObject:@"string1"];
setArray = [mutableSet allObjects];
NSLog(@"The objects in mutableSet are %@",setArray);
[pool drain];
return 0;
}
Agora, quando compilarmos e executarmos o programa, obteremos o seguinte resultado.
2013-09-29 02:35:40.221 demo[12341] The objects in set are (string3, string2, string1)
2013-09-29 02:35:40.222 demo[12341] The objects in mutableSet are (string1)