web-dev-qa-db-ja.com

Objective Cでintから文字列に変換する方法:サンプルコード

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";
70
john

コメントアウトされたバージョンは、これを行うためのより正しい方法です。

文字列に==演算子を使用する場合、文字列の値ではなく、文字列のアドレス(メモリ内で割り当てられている場所)を比較しています。これは非常に便利ですが(まったく同じ文字列オブジェクトがあることを示します)、99%の時間で値を比較したいので、次のようにします。

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

あなたが提案するように文字列へのintが必要なだけなら、私は最も簡単な方法が以下のようにすることであることがわかりました:

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

リテラルを使用できますが、よりコンパクトです。

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

NSNumber としてボックス化され、その stringValue メソッドを使用)

154
Robert

==は、if内のオブジェクトの比較に使用しないでください。 NSStringの場合は、isEqualToString:を使用して比較します。

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

int resultValue = val1 * val2;

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

intNSStringに変換するだけで使用します:

  int x=10;

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