Programmazione iOS e Mac (Gli oggetti Cocoa)

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