80

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";
4

7 に答える 7

181

あなたが提案するように文字列にintが必要なだけの場合、最も簡単な方法は以下のようにすることです:

[NSString stringWithFormat:@"%d",numberYouAreTryingToConvert]
于 2011-02-11T17:41:16.723 に答える
178

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

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

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

于 2012-12-04T13:05:56.043 に答える
33

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

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

if([myT isEqualToString:@"10"] || [myT isEqualToString:@"11"] || [myT isEqualToString:@"12"])
于 2009-07-09T16:03:14.430 に答える
12

==内のオブジェクトを比較するために使用しないでくださいif。それらを比較するためにNSString使用します。isEqualToString:

于 2009-07-09T15:58:32.410 に答える
8
int val1 = [textBox1.text integerValue];
int val2 = [textBox2.text integerValue];

int resultValue = val1 * val2;

textBox3.text = [NSString stringWithFormat: @"%d", resultValue];
于 2012-02-02T05:13:12.250 に答える