Wie konvertiert man NSInteger
in den NSString
Datentyp?
Ich habe folgendes versucht, wobei Monat ein ist NSInteger
:
NSString *inStr = [NSString stringWithFormat:@"%d", [month intValue]];
Wie konvertiert man NSInteger
in den NSString
Datentyp?
Ich habe folgendes versucht, wobei Monat ein ist NSInteger
:
NSString *inStr = [NSString stringWithFormat:@"%d", [month intValue]];
Antworten:
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];
[@(integerValue) stringValue]
ist ein sauberer Ansatz.
Obj-C Weg =):
NSString *inStr = [@(month) stringValue];
An NSInteger
hat die Methode stringValue
, die auch mit einem Literal verwendet werden kann
NSString *integerAsString1 = [@12 stringValue];
NSInteger number = 13;
NSString *integerAsString2 = [@(number) stringValue];
Sehr einfach. Ist es nicht?
var integerAsString = String(integer)
%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.
NSString *string = [NSString stringWithFormat:@"%zd", month];
Wenn Sie daran interessiert sind, warum dies funktioniert, lesen Sie diese Frage .
Einfache Möglichkeit:
NSInteger value = x;
NSString *string = [@(value) stringValue];
Hier @(value)
konvertiert das Gegebene NSInteger
in ein NSNumber
Objekt, für das Sie die gewünschte Funktion aufrufen können stringValue
.
Beim Kompilieren mit Unterstützung für arm64
wird keine Warnung generiert:
[NSString stringWithFormat:@"%lu", (unsigned long)myNSUInteger];
Sie können auch versuchen:
NSInteger month = 1;
NSString *inStr = [NSString stringWithFormat: @"%ld", 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];