Stockage de données dans Objective-C

Le stockage des données et leur récupération est l'un des plus importants de tout programme. En Objective-C, nous ne dépendons généralement pas de structures comme la liste chaînée car cela rend le travail complexe. Au lieu de cela, nous utilisons les collections telles que NSArray, NSSet, NSDictionary et ses formes mutables.

NSArray et NSMutableArray

NSArray est utilisé pour contenir un tableau d'objets immuable et NSMutableArray est utilisé pour contenir un tableau d'objets modifiables.

La mutablilité aide à changer le tableau au moment de l'exécution d'un tableau préalloué, mais si nous utilisons NSArray, nous remplaçons uniquement le tableau existant et ne pouvons pas changer le contenu du tableau existant.

Les méthodes importantes de NSArray sont les suivantes

  • alloc/initWithObjects - Utilisé pour initialiser un tableau avec des objets.

  • objectAtIndex - Renvoie l'objet à un index spécifique.

  • count - Renvoie le nombre d'objets

NSMutableArray est hérité de NSArray et toutes les méthodes d'instance de NSArray sont donc disponibles dans NSMutableArray

Les méthodes importantes de NSMutableArray sont les suivantes -

  • removeAllObjects - Vide le tableau.

  • addObject - Insère un objet donné à la fin du tableau.

  • removeObjectAtIndex - Ceci est utilisé pour supprimer un objet à un index spécifique

  • exchangeObjectAtIndex:withObjectAtIndex - Echange les objets du tableau à des indices donnés.

  • replaceObjectAtIndex:withObject - Remplace l'objet à l'index par un objet.

Nous devons nous rappeler que la liste ci-dessus n'est que les méthodes fréquemment utilisées et que nous pouvons sauter dans les classes respectives de notre XCode pour connaître plus de méthodes dans ces classes. Un exemple simple est présenté ci-dessous.

#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;
}

Maintenant, lorsque nous compilons et exécutons le programme, nous obtiendrons le résultat suivant.

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

Dans le programme ci-dessus, nous avons vu une différenciation simple entre NSMutableArray et NSArray où nous pouvons insérer une chaîne après l'allocation dans un tableau mutable.

NSDictionary et NSMutableDictionary

NSDictionary est utilisé pour contenir un dictionnaire d'objets immuable et NSMutableDictionary est utilisé pour contenir un dictionnaire d'objets modifiables.

Les méthodes importantes de NSDictionary sont les suivantes -

  • alloc/initWithObjectsAndKeys - Initialise un dictionnaire nouvellement alloué avec des entrées construites à partir de l'ensemble spécifié de valeurs et de clés.

  • valueForKey - Renvoie la valeur associée à une clé donnée.

  • count - Renvoie le nombre d'entrées dans le dictionnaire.

NSMutableDictionary est hérité de NSDictionary et, par conséquent, toutes les méthodes d'instance de NSDictionary sont disponibles dans NSMutableDictionary

Les méthodes importantes de NSMutableDictionary sont les suivantes -

  • removeAllObjects - Vide le dictionnaire de ses entrées.

  • removeObjectForKey - Supprime une clé donnée et sa valeur associée du dictionnaire.

  • setValue:forKey - Ajoute une paire clé-valeur donnée au dictionnaire.

Un exemple simple de dictionnaire est présenté ci-dessous -

#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;
}

Maintenant, lorsque nous compilons et exécutons le programme, nous obtiendrons le résultat suivant.

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 et NSMutableSet

NSSet est utilisé pour contenir un ensemble immuable d'objets distincts et NSMutableDictionary est utilisé pour contenir un ensemble mutable d'objets distincts.

Les méthodes importantes de NSSet sont les suivantes -

  • alloc/initWithObjects - Initialise un ensemble nouvellement alloué avec des membres extraits de la liste d'objets spécifiée.

  • allObjects - Renvoie un tableau contenant les membres de l'ensemble ou un tableau vide si l'ensemble n'a pas de membres.

  • count - Renvoie le nombre de membres de l'ensemble.

NSMutableSet est hérité de NSSet et toutes les méthodes d'instance de NSSet sont donc disponibles dans NSMutableSet.

Les méthodes importantes de NSMutableSet sont les suivantes:

  • removeAllObjects - Vide l'ensemble de tous ses membres.

  • addObject - Ajoute un objet donné à l'ensemble, s'il n'est pas déjà membre.

  • removeObject - Supprime un objet donné de l'ensemble.

Un exemple simple pour les ensembles est montré ci-dessous -

#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;
}

Maintenant, lorsque nous compilons et exécutons le programme, nous obtiendrons le résultat suivant.

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)