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";
John
quelle
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"])
Grahamparks
quelle
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]
Scott
quelle
170

Sie können Literale verwenden, es ist kompakter.

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

(Boxen als NSNumber und verwendet die stringValue- Methode)

Robert
quelle
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.

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

int resultValue = val1 * val2;

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

Einfach konvertieren int, um zu NSString verwenden:

  int x=10;

  NSString *strX=[NSString stringWithFormat:@"%d",x];
Ashwini Chougale
quelle
0

Punktgrammatik vielleicht schneller!

@(intValueDemo).stringValue 

zum Beispiel

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

//So you can use dot grammar 
NSLog(@"%@",@(intValueDemo).stringValue);
leo.tan
quelle