Ich verwende [NSNumber numberWithInt:42]
oder @(42)
konvertiere ein int in NSNumber, bevor ich es einem NSDictionary hinzufüge:
int intValue = 42;
NSNumber *numberValue = [NSNumber numberWithInt:intValue];
NSDictionary *dict = @{ @"integer" : numberValue };
Wie kann ich den Wert von NSNumber zurück in int umwandeln, wenn ich ihn aus dem NSDictionary abrufe?
NSNumber *number = dict[@"integer"];
int *intNumber = // ...?
Es wird eine Ausnahme ausgelöst, die besagt, dass Casting erforderlich ist, wenn ich es so mache:
int number = (int)dict[@"integer"];
objective-c
nsnumber
suse
quelle
quelle
[key intValue]
(Schlüssel istNSNumber
)Sie sollten sich nach
NSInteger
Möglichkeit an die Datentypen halten. Sie würden also die Nummer folgendermaßen erstellen:Die Dekodierung funktioniert dann mit der
integerValue
Methode:quelle
NSInteger
?int
ist auch primitiv, ja. Die maximal zulässige Anzahl ist jedoch weniger genau definiert.NSInteger
ist im Wesentlichen nur ein Alias für einen primitiven Integer-Typ, der auf 32-Bit-Computern als 32-Bit und auf 64-Bit-Geräten als 64-Bit bekannt ist.int
, aber es macht wenig Sinn, dies zu tun, außer für die Schnittstelle mit plattformübergreifenden Bibliotheken. Und selbst dannuint32_t
wäre so etwas besser zu benutzen.Verwenden Sie die NSNumber-Methode
intValue
Hier ist die Apple-Referenzdokumentation
quelle
Ein weniger ausführlicher Ansatz:
quelle
Ein getesteter Einzeiler:
quelle