2009-07-09 15 views
60

intから文字列に変換しようとしていますが、問題があります。私はデバッガを介して実行を追跡し、文字列 'myT'は 'sum'の値を取得しますが、 'sum'が10,11,12の場合は 'if'文が正しく機能しません。数値を格納するためにプリミティブ型を使用してはいけませんか?また、私が試みた両方の方法(コメントアウトされたコードを参照)は、 'if'ステートメントの真のパスに従わない。ありがとう!intを文字列から目的関数に変換する方法:例コード

int x = [my1 intValue]; 
    int y = [my2 intValue]; 
    int sum = x+y; 
    //myT = [NSString stringWithFormat:@"%d", sum]; 
    myT = [[NSNumber numberWithInt:sum] stringValue]; 

    if([email protected]"10" || [email protected]"11" || [email protected]"12") 
     action = @"numGreaterThanNine"; 
+6

を使用すると、文字列に整数を入れている理由はありますか?あなたのテストを 'if(sum> = 10 && sum <= 12)'と書くほうがずっと簡単でしょう。 – Alex

+1

以下の答えがあなたを混乱させるなら、この関連する質問をチェックしてください:http://stackoverflow.com/questions/3414644/how-to-convert-integer-to-string-in-objective-c-closed – Florin

答えて

30

コメントアウトされたバージョンはこれを行うより正確な方法です。

文字列に==演算子を使用すると、文字列の値ではなく文字列のアドレス(メモリに割り当てられている)が比較されます。

if([myT isEqualToString:@"10"] || [myT isEqualToString:@"11"] || [myT isEqualToString:@"12"]) 
+0

2回目の比較で、わずかな入力ミスがあります。 – marcc

12

==はあなたのif内のオブジェクトを比較するために使用すべきではありません。 NSStringについては、isEqualToString:を使用して比較してください。

156

あなただけにint型が必要な場合:これは(それはあなたがまったく同じ文字列オブジェクトを持って示す)に有用非常に時折ですが、時間の99%はあなたがとても好きな値を、比較したいですあなたが提案するなどの文字列は、私が最も簡単な方法は、以下のように行うことです見つけた:

[NSString stringWithFormat:@"%d",numberYouAreTryingToConvert] 
6
int val1 = [textBox1.text integerValue]; 
int val2 = [textBox2.text integerValue]; 

int resultValue = val1 * val2; 

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

あなたはリテラルを使用することができますが、それはよりコンパクトです。

NSNumberとその stringValueメソッドを使用していますように箱)
NSString* myString = [@(17) stringValue]; 

+3

@RavindranathAkila - 'stringWithFormat'はより柔軟で強力で一般的に使用されるべきです。これは単純な変換の後であれば単なるショートカットです。 – Robert

+0

ありがとうございます。確かに、私は非冗長なアプローチを探していました:-) –

3

単にint NSStringに使用変換:

int x=10; 

    NSString *strX=[NSString stringWithFormat:@"%d",x]; 
関連する問題