Controllare se una NSString è un numero (Intero o Float)

Vediamo una semplice funzione per capire se una classica NSString in realtà contiene dei numeri e quindi deve essere interpretata come tale.

Questa snippet di codice potrebbe essere molto utile ad esempio nel caso in cui ricaviamo dati esterni che vengono incorporati come NSString e vegliamo capire a runtime di cosa si tratta.

Useremo un oggetto NSScanner che ci permette di poter scansionare la stringa inserita in tutti i suoi aspetti.

scanFloat: ritorna SI se il ricevitore trova una valida rappresentazione in virgola mobile (float), altrimenti NO.

 

isAtEnd:  ritorna YES se il ricevitore ha esaurito tutti i caratteri significativi della sua stringa, altrimentiNO.

[code lang=”obj-c”]NSScanner *scan = [NSScanner scannerWithString:@\”stringa\”]; //stringa classica

//NSScanner *scan = [NSScanner scannerWithString:@\”123\”];//solo numeri

if (![scan scanFloat:NULL] || ![scan isAtEnd]){
NSLog(@\”è una stringa classica\”);
}
else{
NSLog(@\”sono tutti valori numerici\”);
}[/code]

Semplice vero? Abbiamo concluso. Se conosci un altro modo per ottenere lo stesso risultato puoi farmelo sapere con un commento.