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";
objective-c
nsstring
int
John
quelle
quelle
if (sum >= 10 && sum <= 12)
Antworten:
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"])
quelle
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]
quelle
Sie können Literale verwenden, es ist kompakter.
NSString* myString = [@(17) stringValue];
(Boxen als NSNumber und verwendet die stringValue- Methode)
quelle
stringWithFormat
ist 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.==
sollte nicht verwendet werden, um Objekte in Ihrem zu vergleichenif
. Für denNSString
EinsatzisEqualToString:
um sie zu vergleichen.quelle
int val1 = [textBox1.text integerValue]; int val2 = [textBox2.text integerValue]; int resultValue = val1 * val2; textBox3.text = [NSString stringWithFormat: @"%d", resultValue];
quelle
Einfach konvertieren
int
, um zuNSString
verwenden:int x=10; NSString *strX=[NSString stringWithFormat:@"%d",x];
quelle
Punktgrammatik vielleicht schneller!
zum Beispiel
int intValueDemo = 1; //or NSInteger intValueDemo = 1; //So you can use dot grammar NSLog(@"%@",@(intValueDemo).stringValue);
quelle