In einem älteren Artikel bin ich auf die Bedeutung von NSNumber als “Wrapper-Klasse” eingegangen. Dieser Artikel behandelt hingegen grundlegende Aspekte zu NSNumber.
NSNumber erlaubt es elementare Datentypen – wie int oder double – in Form eines Objekts zu “speichern”. Dafür beinhaltet die NSNumber-Klasse eine Reihe von Klassenmethoden, mit denen NSNumber-Objekte initialisiert werden können. Die zu verwendende Klassenmethode ist dabei vom Typ abhängig, der in NSNumber “gespeichert” werden soll. Nachfolgend drei Beispiele für die Datentypen int, double und float:
NSNumber *myIntValue = [NSNumber numberWithInt: 100];
NSNumber *myDoubleValue = [NSNumber numberWithDouble: 10.24];
NSNumber *myFloatValue = [NSNumber numberWithFloat: 40.72];
Es existieren verschiedene Instanzmethoden, die den Zugriff auf die im NSNumber-Objekt enthaltenen Werte ermöglichen. Für die drei aufgeführten Beispiele wären das:
intValue
doubleValue
floatValue
So könnte man beispielswiese den Wert 100 vom Typ int aus dem obigen Beispiel wie folgt in der Konsole – mittels eines NSLog – ausgeben lassen:
int value;
value = [myIntValue intValue];
NSLog(@"value = %d", value);
oder für einen Wert vom Typ double:
double value;
value = [myDoubleValue doubleValue];
NSLog(@"value = %f", value);
Für die Ausgabe einer Zeichenkette (string) ist die Methode stringValue vorgesehen. Angenommen es soll ein Wert (vom Typ double) ausgegeben werden, der von einem NSNumber-Objekt gehalten wird:
NSNumber *myDoubleValue = [NSNumber numberWithDouble: 100];
Die Ausgabe als String ließe sich dann wie folgt bewerkstelligen:
NSString *myString = [myDoubleValue stringValue];
Nun wäre beispielsweise eine Anzeige dieses Strings in einem UITextField möglich:
[myTextField setText:myString];
oder kürzer:
[myTextField setText:[myDoubleValue stringValue]];