Konvertieren von int in string in Ziel c: Beispielcode


77

Ich versuche, von einem int in einen String zu konvertieren, habe aber Probleme. Ich habe die Ausführung durch den Debugger verfolgt und die Zeichenfolge 'myT' erhält den Wert 'sum', aber die Anweisung 'if' funktioniert nicht richtig, wenn 'sum' 10,11,12 ist. Sollte ich nicht einen primitiven int-Typ verwenden, um die Nummer zu speichern? Außerdem folgen beide Methoden, die ich ausprobiert habe (siehe auskommentierten Code), nicht dem wahren Pfad der 'if'-Anweisung. Vielen Dank!

int x = [my1 intValue]; 
    int y = [my2 intValue]; 
    int sum = x+y;
    //myT = [NSString stringWithFormat:@"%d", sum];
    myT = [[NSNumber numberWithInt:sum] stringValue];

    if(myT==@"10" || myT==@"11" || myT==@"12")
        action = @"numGreaterThanNine";

6
Gibt es einen Grund, warum Sie die Ganzzahl in eine Zeichenfolge einfügen? Es wäre so viel einfacher, Ihren Test zu schreiben alsif (sum >= 10 && sum <= 12)
Alex

1
Wenn die Antworten unten Sie verwirren, überprüfen Sie diese verwandte Frage: stackoverflow.com/questions/3414644/…
Florin

Antworten:


32

Die auskommentierte Version ist der korrektere Weg, dies zu tun.

Wenn Sie den ==Operator für Zeichenfolgen verwenden, vergleichen Sie die Adressen der Zeichenfolgen (wo sie im Speicher zugeordnet sind) und nicht die Werte der Zeichenfolgen. Dies ist gelegentlich sehr nützlich (es zeigt an, dass Sie genau dasselbe Zeichenfolgenobjekt haben), aber in 99% der Fälle möchten Sie die Werte vergleichen, was Ihnen gefällt:

if([myT isEqualToString:@"10"] || [myT isEqualToString:@"11"] || [myT isEqualToString:@"12"])

Leichter Tippfehler, ein Fehlen: im 2. Vergleich.
März

175

Wenn Sie nur ein Int für eine Zeichenfolge benötigen, wie Sie vorschlagen, ist es für mich am einfachsten, die folgenden Schritte auszuführen:

[NSString stringWithFormat:@"%d",numberYouAreTryingToConvert]

170

Sie können Literale verwenden, es ist kompakter.

NSString* myString = [@(17) stringValue];

(Boxen als NSNumber und verwendet die stringValue- Methode)


3
@ RavindranathAkila - stringWithFormatist flexibler / leistungsfähiger und sollte allgemein verwendet werden. Dies ist nur eine Verknüpfung, wenn es sich um eine einfache Konvertierung handelt, nach der Sie suchen.
Robert

12

==sollte nicht verwendet werden, um Objekte in Ihrem zu vergleichen if. Für den NSStringEinsatz isEqualToString:um sie zu vergleichen.


8
int val1 = [textBox1.text integerValue];
int val2 = [textBox2.text integerValue];

int resultValue = val1 * val2;

textBox3.text = [NSString stringWithFormat: @"%d", resultValue];

4

Einfach konvertieren int, um zu NSString verwenden:

  int x=10;

  NSString *strX=[NSString stringWithFormat:@"%d",x];

0

Punktgrammatik vielleicht schneller!

@(intValueDemo).stringValue 

zum Beispiel

int intValueDemo  = 1;
//or
NSInteger intValueDemo = 1;

//So you can use dot grammar 
NSLog(@"%@",@(intValueDemo).stringValue);
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.