intをNSStringに変換する方法は?


101

私は、変換したいintNSString客観Cで

これどうやってするの?

回答:


147

プリミティブは、@()式を使用してオブジェクトに変換できます。したがって、最短の方法は、メソッドで文字列表現に変換intNSNumberて取得するstringValueことです。

NSString *strValue = [@(myInt) stringValue];

または

NSString *strValue = @(myInt).stringValue;

12
冗長性がやや低い:NSString *strValue = @(myInt).stringValue;
Distortum

@DielsonSales一部のオブジェクトはありませんstringValueが、すべて持っているdescription-ので、良い練習としてそれを使用していないに慣れる方が良いでしょうdescriptionNSNumber、ここで心配する必要はありません)。これを試してください(description日付は出力されますが、stringValueクラッシュします):NSNumber *test = (id)[NSDate date]; NSLog(@"description: %@", test.description); NSLog(@"string value: %@", test.stringValue);
イスラムQ.

1
@IslamQ。@(myInt)ボックス化された式[NSNumber numberWithInt:]あり、intを指定すると常にNSNumberを返します。[NSNumber stringValue]常にNSStringを返します。コメントのコードで、強制的にキャストし(id)て別の型に割り当てるのは、明らかなプログラミングの誤りです。決して実行してはなりません。これは、メソッドをスウィズルし、そのメソッドについて、最初は何をしていないのかを議論するようなものです。
クール

1
@IslamQ。クラッシュオペレーター(!)を使用せずにコメントをSwiftに変換してみてください。Objective-Cで誤って実行していたことがわかります。オブジェクトtestが自分で作成したものでない場合、それはあなたの責任ではありません。isKindOfClass:受け取ったすべてのパラメーターを呼び出そうとするかもしれませんが、それでもだまされる可能性があります(たとえば、NSObjectではなくstructを渡すことによって)。そのため、そうしないでください。期待される型を明示的に文書化してください。
クール

@Cœur、もちろん、オブジェクトのキャスト(id)は間違いです。IMO descriptionが優先されるという点をデモするだけでしたstringValue(私は間違っている可能性があり、ObjCで何年もプログラムされていません)
イスラムQ.

144
NSString *string = [NSString stringWithFormat:@"%d", theinteger];

@Elistプリミティブ型がわかっている場合、コードから中間のNSNumberを回避することにより、オーバーヘッドがわずかに少なくなるのではないでしょうか。@(myInt)ある箱入り式は、それがするNSNumberを返します。
クール

37
int i = 25;
NSString *myString = [NSString stringWithFormat:@"%d",i];

これは多くの方法の1つです。


2

この文字列がエンドユーザーへの表示用である場合は、を使用する必要がありますNSNumberFormatter。これにより、数千のセパレータが追加され、ユーザーのローカリゼーション設定が尊重されます。

NSInteger n = 10000;
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = NSNumberFormatterDecimalStyle;
NSString *string = [formatter stringFromNumber:@(n)];

たとえば、米国では文字列を作成します10,000が、ドイツではそれを作成します10.000

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.