Wie man Richtig einen integer-Wert in NSDictionary?
Den folgenden code-snippet:
NSLog(@"userInfo: The timer is %d", timerCounter);
NSDictionary *dict = [NSDictionary dictionaryWithObject:[NSNumber numberWithInteger:timerCounter] forKey:@"timerCounter"];
NSUInteger c = (NSUInteger)[dict objectForKey:@"timerCounter"];
NSLog(@"userInfo: Timer started on %d", c);
erzeugt eine Ausgabe, die entlang der Linien von:
2009-10-22 00:36:55.927 TimerHacking[2457:20b] userInfo: The timer is 1
2009-10-22 00:36:55.928 TimerHacking[2457:20b] userInfo: Timer started on 5295968
(FWIW, timerCounter ist ein NSUInteger.)
Ich bin sicher, ich bin etwas fehlt ziemlich offensichtlich, eben nur nicht sicher, was es ist.
InformationsquelleAutor der Frage Bill | 2009-10-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie verwenden
intValue
aus den empfangenen Objekt (einNSNumber
), und nicht mit einem cast:InformationsquelleAutor der Antwort epatel
Wörterbücher immer Objekte speichern. NSInteger und NSUInteger sind keine Objekte. Ihr Wörterbuch ist die Speicherung ein NSNumber (denken Sie daran, dass
[NSNumber numberWithInteger:timerCounter]
?), das ist ein Objekt. So wie epatel sagte, Sie brauchen auf Fragen, die NSNumber für seineunsignedIntegerValue
wenn Sie möchten, eine NSUInteger.InformationsquelleAutor der Antwort Chuck
Oder wie diese mit Literale:
Müssen Sie gegossen, als NSNumber zunächst als Objekt gezogen aus dem Wörterbuch id_nullable und so nicht reagieren, um den Wert konvertieren Methoden.
InformationsquelleAutor der Antwort Kez