Wie konvertiert man NSInteger
in den NSString
Datentyp?
Ich habe folgendes versucht, wobei Monat ein ist NSInteger
:
NSString *inStr = [NSString stringWithFormat:@"%d", [month intValue]];
NSIntegers sind keine Objekte, in die Sie sie umwandeln long
, um der Definition der aktuellen 64-Bit-Architekturen zu entsprechen:
NSString *inStr = [NSString stringWithFormat: @"%ld", (long)month];
Format specifies type 'int' but the argument has type 'NSInteger *'(aka 'int *')
. Stattdessen ging ich laut Apple Docs mitNSString *inStr = [NSString stringWithFormat:@"%d", (int)month];
[@(integerValue) stringValue]
ist ein sauberer Ansatz.Obj-C Weg =):
quelle
Modernes Ziel-C
An
NSInteger
hat die MethodestringValue
, die auch mit einem Literal verwendet werden kannSehr einfach. Ist es nicht?
Schnell
quelle
%zd
Funktioniert für NSInteger (%tu
für NSUInteger) ohne Casts und ohne Warnungen auf 32-Bit- und 64-Bit-Architekturen. Ich habe keine Ahnung, warum dies nicht der " empfohlene Weg " ist.Wenn Sie daran interessiert sind, warum dies funktioniert, lesen Sie diese Frage .
quelle
Einfache Möglichkeit:
Hier
@(value)
konvertiert das GegebeneNSInteger
in einNSNumber
Objekt, für das Sie die gewünschte Funktion aufrufen könnenstringValue
.quelle
Beim Kompilieren mit Unterstützung für
arm64
wird keine Warnung generiert:quelle
Sie können auch versuchen:
quelle
Die Antwort wird gegeben, aber denken Sie, dass dies in einigen Situationen auch eine interessante Möglichkeit ist, einen String von NSInteger zu erhalten
quelle
NSNumber kann in diesem Fall gut für Sie sein.
quelle