Ich möchte ein int
in ein NSString
in Ziel C konvertieren .
Wie kann ich das machen?
objective-c
Yogini
quelle
quelle
NSString *strValue = @(myInt).stringValue;
stringValue
, aber alle habendescription
- als gute Praxis ist es besser, sich an die Verwendung zu gewöhnendescription
(NSNumber
macht sich hier keine Sorgen). Versuchen Sie dies (description
druckt das Datum aus,stringValue
stürzt aber ab):NSNumber *test = (id)[NSDate date]; NSLog(@"description: %@", test.description); NSLog(@"string value: %@", test.stringValue);
@(myInt)
ist ein Boxed-Ausdruck für[NSNumber numberWithInt:]
und gibt immer eine NS-Nummer zurück, wenn ein int angegeben wird.[NSNumber stringValue]
gibt immer einen NSString zurück. Im Code Ihres Kommentars ist das erzwungene Casting mit(id)
und Zuweisen zu einem anderen Typ ein klarer Programmierfehler: Sie sollten dies niemals tun. Es ist, als würde man eine Methode durcheinander bringen und dann darüber streiten, dass diese Methode nicht das tut, was sie ursprünglich getan hat.!
) zu verwenden, und Sie werden feststellen, dass Sie ihn in Objective-C falsch gemacht haben. Wenn das Objekttest
nicht von Ihnen erstellt wurde, liegt es nicht in Ihrer Verantwortung. Sie können versuchen,isKindOfClass:
alle empfangenen Parameter abzurufen, aber selbst das kann getäuscht werden (indem Sie beispielsweise eine Struktur anstelle eines NSObjects übergeben). Tun Sie es also nicht: Dokumentieren Sie einfach explizit die erwarteten Typen.(id)
ist natürlich ein Fehler, es war nur, um den Punkt zu demonstrieren, an dem IMOdescription
bevorzugt wirdstringValue
(ich kann mich irren, habe seit Jahren nicht mehr in ObjC programmiert)quelle
@(myInt)
ist ein Boxed-Ausdruck und gibt eine NSNumber zurück.Dies ist eine von vielen Möglichkeiten.
quelle
Wenn diese Zeichenfolge dem Endbenutzer präsentiert werden soll, sollten Sie sie verwenden
NSNumberFormatter
. Dadurch werden Tausende Trennzeichen hinzugefügt und die Lokalisierungseinstellungen für den Benutzer berücksichtigt:In den USA würde das zum Beispiel eine Zeichenfolge erzeugen
10,000
, in Deutschland jedoch10.000
.quelle