Tramite il framework Cocoa per Mac ( CocoaTouch per iPhone )si hanno a disposizione altri oggetti per immagazzinare i dati
Cocoa è composto principalemente da due framework :
Foundation Kit -> una libreria generica contenente la definizione di funzioni per la manipolazione di stringhe e variabili,containers e iteratori, run loops, ed altre funzioni non direttamente collegate all’interfaccia grafica dell’applicazione
Application Kit -> contiene funzioni utili allo sviluppo di interfacce grafiche.
Come una libreria condivisa il framework contiene la definizione di oggetti e funzioni che possono essere richiamati dinamicamente all’interno di una applicazione.
NSString
permette di dichiarare delle stringhe immutabili (che non possono subire modifiche).
NSString *stringa;
Un oggetto di tipo NSString rappresenta una stringa di caratteri. La gestione delle stringhe attraversto questa classe offre numerosi vantaggi quali la possibilità di utilizzare metodi già elaborati per manipolazione di queste ultime.
Per dare il valore a una stringa si usa questo codice:
stringa=@”La mia stringa”;
Per aggiungere altre variabili al valore della stringa di tipo NSString si puo’ usare il seguente metodo:
Tra i metodi prinicpali esposti dall’interfaccia di NSString possiamo ritrovare due tipologie differenti
Metodi substring
Permettono di estrarre determinati valori da una stringa
Metodi range
Permettono di verificare la posizione di alcuni caratteri
Tra i metodi substring abbiamo :
(NSString*)substringFromIndex:(NSUinteger)Index
serve a prelevare i valori di una stringa da un certo punto
(NSString*)substringToIndex:(NSUinteger)Index
serve ad eliminare la parte finale di una stringa
Tra i metodi range abbiamo :
(NSRange)rangeOfString:(NSString*)aString
cerca aString nella stringa che richiama il metodo . Se aString è contenuto nella stringa allora il valore NSRange restituito avrà la property location diversa da NSNotFound, altrimenti [NSRange].location
varrà NSNotFound
ES
int main (int argc,char *argv[])
{
int numero = 2;
NSString *stringa = [NSString stringWithFormat :
@”Il valore di numero è:%i”,numero]; NSRange subRange; subRange =[stringa rangeOfString:@”valore”];
NSLog(@”La parola inizia alla %i lettera ed è lunga %i”,
subRange.location,subRange.length); return 0; } Tra gli altri Metodi di NSString troviamo: (NSString*)stringByReplacingOccurrencesOfString :(NSString *)target withString:(NSString*)replacement Sostituisce le occorenze di target con replacement (NSString*)stringByReplacingCharactersInRange:(NSRange)range withString:(NSString *)replacement
Sostitusce i caratteri presento in range con la stringa replacement
(BOOL)isEqualToString:(NSString*)string;
verifica l’uguaglianza tra due stringhe
(BOOL) hasPrefix:(NSString*)aString
Verifica se aString corrisponde ai primi caratteri della stringa
NSArray
permette di gestire strutture dati di tipo array statico
NSArray *array;
NSArray consente di trattare una serie di variabili contenute nel medesimo oggetto.
Gli indici partono da 0
E’ possibile utilizzare diversi metodi per definire un array,tra cui
(id)arrayWithObject:(id)anObject
crea un array con un singolo elemento anObject
g(id)initWithArray:(NSArray*)anArray
crea un array e lo inizializza gli oggetti anArray
Tra i metodi per manipolare un oggetti di tipo NSArray troviamo :
(id)objectAtIndex:(NSUiteger)index
Restituisce l’oggetto corrispondente all’indice index
(NSUInteger)count
Recupera il numero di elementi presenti nell’array
NSDictionary
Permette di creare delle associazioni immutabili tra variabili e delle chiavi.
NSDictionary *dictionary;
Ogni coppia chiave-valore(key-value) viene chiamata entry.
In un dizionario tutte le chiavi sono uniche
In generale qualunque tipo di oggetto può essere chiave ,ma solitamente quando si definisce una coppia key-value la key è una stringa
I metodi più comuni per manipolare un NSDictionary sono:
(id)dictionaryWithObjects:(NSArray *)objects forKeys:(NSArray *)keys
Crea un dizionario dove objects definisce i valori e keys le relative chiavi associate.
(NSUInteger)count
Restituisce il numero di entry presenti nel dizionario
(id)objectForKey:(id)aKey
Restituisce l’oggetto associato alla chiave aKey
NSSet
Definisce una collezione non ordinata di elementi in maniera statica
NSSet *set;
E’ possibile utilizzare NSSet in luogo di NSArray quando la posizione degli oggetti non è rilevante.
Permette la gestione di insieme di dati iteso in senso matematico
Tra i metodi definiti nell’interfaccia di NSMutableDictionary abbiamo:
(id)setWithObject:(id)anObject
Crea e restituisce un set formato da un solo elemento anObject
(id)setWithObjectss:(id)anObject
Crea e restituisce un set formato dalla lista di oggetti passata come parametro
(NSUInteger)count
Restituisce il numero di oggetti contenuti nel set
Tra i metodi definiti nell’interfaccia di NSMutableDictionary abbiamo:
(BOOL)intersectsSet:(NSSet*)otherSet
Restituisce YES se almeno un oggetto otherSet è contenuto nel set
NSString NSDictionary NSArray NSSet
Sono oggetti di tipo statico : una volta definiti non possono subire modifiche
In Cocoa sono stati definiti degli oggetti dinamici come sottoclasse degli oggetti analizzati precedentemente che offrono maggiori funzionalità e soprattutto permettono di modificare l’oggetto stesso nel corso del programma
NSMutableString
Definisce una stringa in maniera dinamica
NSMutableString *stringaMutabile;
Deriva da NSString di conseguenza ne eredita tutti i metodi.
Definisce dei metodi aggiuntivi e permette ad una stringa di essere modificata.
Tra i metodi definiti nell’interfaccia di NSMutableString abbiamo:
(void)appendString:(NSString*)asString
Aggiunge aString alla fine della stringa
(void)deleteCharactersInRange:(NSRange)aRange
Cancella i caratteri che si trovano in aRange
(void)inserString:(NSString *)aStringatIndex:(NSUInteger)anIndex
Inserisce aString nella posizione di indice anIndex
NSMutableArray
Definisce un array in maniera dinamica
NSMutableArray *arrayMutabile;
Deriva da NSArray di conseguenza ne eredita tutti i metodi.
Come per NSMutableString,definisce dei metodi aggiuntivi e permette ad un array di essere modificato e di variare la sua dimensione.
Tra i metodi definiti nell’interfaccia di NSMutableArray abbiamo:
(void)insertObject:(id)anObject atIndex:(NSUInteger)index
inserisce anObject nella posizione index
(void)addObject:(id)anObject
aggiunge anObjet in coda all’array
(void)removeObjectAtIndex:(NSUInteger)index
Elimina l’oggetto di indice anIndex
NSMutableDictionary
Definisce un array in maniera dinamica
NSMutableDictionary *dictionary;
Deriva da NSDictionary di conseguenza ne eredita tutti i metodi.
E’ possibile con NSMutableDictionary aumentare lo spazio allocato per l’oggetto qualora necessario
Tra i metodi definiti nell’interfaccia di NSMutableDictionary abbiamo:
(id)initWithCapacity:(NSUInteger)numItems
crea un dizionario con una capacità iniziale di numItems
(void) removeObjectForKey:(id)aKey
Elimina l’oggetto da aKey
Tra i metodi definiti nell’interfaccia di NSMutableDictionary abbiamo:
(void)addEntriesFromDictionary: (NSDictionary *)otherDictionary
Inizializza il dizionario con gli oggetti presenti in otherDictionary
NSMutableSet
Definisce un insieme dinamico
NSMutableSet *set;
Deriva da NSSet di conseguenza ne eredita tutti i metodi.
Definisce metodi aggiuntivi per la modifica del set
Tra i metodi definiti nell’interfaccia di NSMutableSet abbiamo:
(id)initWithCapacity:(NSUinteger)numItems
inizializza il set con capacità iniziale di numItems
(void)removeObject:(id)anObject
Rimuove anObject dal set
NSNumber
Permette di incapsulare i tipi numerici del C in oggetti
NSDate / NSCalendarDate
Permette di memorizzare e gestire le date
NSData/ NSMutableData
Classe wrapper per un array di bytes
Esistono molti altri tipi definiti all’interno del framework Cocoa per maggiori informazioni vi invito a consultare
la documentazione apple