Intから文字列に変換しようとしていますが、問題があります。デバッガーを介して実行した後、文字列「myT」は「sum」の値を取得しますが、「sum」が10,11,12の場合、「if」ステートメントは正しく機能しません。数値を格納するためにプリミティブなint型を使用するべきではありませんか?また、私が試した両方の方法(コメントアウトされたコードを参照)は、 'if'ステートメントの真のパスをたどりません。ありがとう!
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";
コメントアウトされたバージョンは、これを行うためのより正しい方法です。
文字列に==
演算子を使用する場合、文字列の値ではなく、文字列のアドレス(メモリ内で割り当てられている場所)を比較しています。これは非常に便利ですが(まったく同じ文字列オブジェクトがあることを示します)、99%の時間で値を比較したいので、次のようにします。
if([myT isEqualToString:@"10"] || [myT isEqualToString:@"11"] || [myT isEqualToString:@"12"])
あなたが提案するように文字列へのintが必要なだけなら、私は最も簡単な方法が以下のようにすることであることがわかりました:
[NSString stringWithFormat:@"%d",numberYouAreTryingToConvert]
リテラルを使用できますが、よりコンパクトです。
NSString* myString = [@(17) stringValue];
( NSNumber としてボックス化され、その stringValue メソッドを使用)
==
は、if
内のオブジェクトの比較に使用しないでください。 NSString
の場合は、isEqualToString:
を使用して比較します。
int val1 = [textBox1.text integerValue];
int val2 = [textBox2.text integerValue];
int resultValue = val1 * val2;
textBox3.text = [NSString stringWithFormat: @"%d", resultValue];
int
をNSString
に変換するだけで使用します:
int x=10;
NSString *strX=[NSString stringWithFormat:@"%d",x];