Archiviazione dei dati in Objective-C
La memorizzazione dei dati e il loro recupero è una delle più importanti in qualsiasi programma. In Objective-C, generalmente non dipendiamo da strutture come la lista collegata poiché rende il lavoro complesso. Invece, usiamo le raccolte come NSArray, NSSet, NSDictionary e le sue forme mutabili.
NSArray e NSMutableArray
NSArray viene utilizzato per contenere un array di oggetti immutabile e NSMutableArray viene utilizzato per contenere un array mutabile di oggetti.
La mutabilità aiuta a cambiare l'array in runtime un array preallocato, ma se usiamo NSArray, sostituiamo solo l'array esistente e non possiamo cambiare il contenuto dell'array esistente.
Metodi importanti di NSArray sono i seguenti
alloc/initWithObjects - Utilizzato per inizializzare un array con oggetti.
objectAtIndex - Restituisce l'oggetto a un indice specifico.
count - Restituisce il numero di oggetti
NSMutableArray è ereditato da NSArray e quindi tutti i metodi di istanza di NSArray sono disponibili in NSMutableArray
Metodi importanti di NSMutableArray sono i seguenti:
removeAllObjects - Svuota l'array.
addObject - Inserisce un determinato oggetto alla fine dell'array.
removeObjectAtIndex - Questo è usato per rimuovere objectAt un indice specifico
exchangeObjectAtIndex:withObjectAtIndex - Scambia gli oggetti nell'array a determinati indici.
replaceObjectAtIndex:withObject - Sostituisce l'oggetto all'indice con un oggetto.
Dobbiamo ricordare che l'elenco sopra è solo i metodi usati di frequente e possiamo saltare nelle rispettive classi nel nostro XCode per conoscere più metodi in queste classi. Di seguito viene mostrato un semplice esempio.
#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;
}
Ora, quando compiliamo ed eseguiamo il programma, otterremo il seguente risultato.
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
Nel programma precedente, abbiamo visto una semplice differenziazione tra NSMutableArray e NSArray dove possiamo inserire una stringa dopo l'allocazione in un array mutabile.
NSDictionary e NSMutableDictionary
NSDictionary viene utilizzato per contenere un dizionario immutabile di oggetti e NSMutableDictionary viene utilizzato per contenere un dizionario mutabile di oggetti.
Metodi importanti di NSDictionary sono i seguenti:
alloc/initWithObjectsAndKeys - Inizializza un dizionario appena allocato con voci costruite dal set di valori e chiavi specificato.
valueForKey - Restituisce il valore associato a una determinata chiave.
count - Restituisce il numero di voci nel dizionario.
NSMutableDictionary è ereditato da NSDictionary e quindi tutti i metodi di istanza di NSDictionary sono disponibili in NSMutableDictionary
Metodi importanti di NSMutableDictionary sono i seguenti:
removeAllObjects - Svuota il dizionario delle sue voci.
removeObjectForKey - Rimuove una determinata chiave e il valore associato dal dizionario.
setValue:forKey - Aggiunge una data coppia chiave-valore al dizionario.
Di seguito è mostrato un semplice esempio di dizionario:
#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;
}
Ora, quando compiliamo ed eseguiamo il programma, otterremo il seguente risultato.
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 viene utilizzato per contenere un insieme immutabile di oggetti distinti e NSMutableDictionary viene utilizzato per contenere un insieme modificabile di oggetti distinti.
I metodi importanti di NSSet sono i seguenti:
alloc/initWithObjects - Inizializza un nuovo insieme allocato con membri presi dall'elenco di oggetti specificato.
allObjects - Restituisce un array contenente i membri del set o un array vuoto se il set non ha membri.
count - Restituisce il numero di membri nel set.
NSMutableSet viene ereditato da NSSet e quindi tutti i metodi di istanza di NSSet sono disponibili in NSMutableSet.
I metodi importanti di NSMutableSet sono i seguenti:
removeAllObjects - Svuota l'insieme di tutti i suoi membri.
addObject - Aggiunge un determinato oggetto al set, se non è già un membro.
removeObject - Rimuove un determinato oggetto dal set.
Di seguito è mostrato un semplice esempio di set:
#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;
}
Ora, quando compiliamo ed eseguiamo il programma, otterremo il seguente risultato.
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)