Antworten:
Grundelemente können in Objekte mit @()Ausdruck konvertiert werden . Der kürzeste Weg besteht also darin int, NSNumberdie Zeichenfolgendarstellung mit der folgenden stringValueMethode zu transformieren und aufzunehmen :
NSString *strValue = [@(myInt) stringValue];
oder
NSString *strValue = @(myInt).stringValue;
stringValue, aber alle haben description- als gute Praxis ist es besser, sich an die Verwendung zu gewöhnen description( NSNumbermacht sich hier keine Sorgen). Versuchen Sie dies ( descriptiondruckt das Datum aus, stringValuestü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 Objekt testnicht 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 IMO descriptionbevorzugt wird stringValue(ich kann mich irren, habe seit Jahren nicht mehr in ObjC programmiert)
NSString *string = [NSString stringWithFormat:@"%d", theinteger];
@(myInt)ist ein Boxed-Ausdruck und gibt eine NSNumber zurück.
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:
NSInteger n = 10000;
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = NSNumberFormatterDecimalStyle;
NSString *string = [formatter stringFromNumber:@(n)];
In den USA würde das zum Beispiel eine Zeichenfolge erzeugen 10,000, in Deutschland jedoch 10.000.
NSString *strValue = @(myInt).stringValue;