NSNumber

NSNumber

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]];