In diesem Artikel geht es um grundlegende Aspekte zu NSNumber, wie beispielsweise den Zugriff auf den in einem NSNumber-Objekt enthaltenen Wert. 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]];