NSIntegerをNSStringデータ型に変換するにはどうすればよいですか?


137

どのようにしNSIntegerNSStringデータ型に変換しますか?

私は次のことを試しました、月はNSInteger

  NSString *inStr = [NSString stringWithFormat:@"%d", [month intValue]];

回答:


267

NSIntegersはオブジェクトではありません。long現在の64ビットアーキテクチャの定義と一致させるために、それらをにキャストします。

NSString *inStr = [NSString stringWithFormat: @"%ld", (long)month];


11
私はこれを試しましたが、警告が出続けましたFormat specifies type 'int' but the argument has type 'NSInteger *'(aka 'int *')。代わりにApple docsによると、私は一緒に行きましたNSString *inStr = [NSString stringWithFormat:@"%d", (int)month];
Steven

8
新しいA7チップなどの64ビットプロセッサでは、アプリが64ビット用にコンパイルされている場合、NSIntegerは実際にはintではなくlongであることに注意してください。キャストを行うと、(int)monthは、64ビットプラットフォームでは一般的なケースでは破壊的です。Appleプラットフォームのみを対象とする場合は、Aleksey Kozhevnikovの回答のようにObjective-Cの方法を使用するか、intとlongの両方で機能する同様のもの(たとえばlong ;-)を使用しますレイの答え。
Louis St-Amour

1
@Steven回答を削除して、現在のより適切な回答を表示して受け入れるようにしましたが、受け入れられた回答は削除できません。したがって、警告をトリガーしない迅速な解決策を探している人々にできるだけ多くの有用な情報を提供するために、少なくともその内容を調整しようとしました。
luvieere、2014

@luvieere Appleのドキュメントには、フォーマット文字列でNSIntegerを処理する方法が明確に説明されています。このアドバイスに従うには、回答を更新する必要があります。
Nikolai Ruhe 2014年

2
[@(integerValue) stringValue]よりクリーンなアプローチです。
Zorayr 2015年


76

最新のObjective-C

アンはNSInteger方法があるstringValueにもリテラルで使用することができます

NSString *integerAsString1 = [@12 stringValue];

NSInteger number = 13;
NSString *integerAsString2 = [@(number) stringValue];

とても簡単です。だよね?

迅速

var integerAsString = String(integer)

8

%zdNSIntegers(%tuNSUIntegerの場合)で動作し、32ビットと64ビットの両方のアーキテクチャでキャストや警告はありません。これが「推奨される方法」ではない理由がわかりません。

NSString *string = [NSString stringWithFormat:@"%zd", month];

これが機能する理由に興味がある場合は、この質問を参照してください。


5

簡単な方法:

NSInteger value = x;
NSString *string = [@(value) stringValue];

ここで、@(value)は指定さNSIntegerれたをNSNumber、必要な関数を呼び出すことができるオブジェクトに変換しますstringValue


2

をサポートしてコンパイルする場合arm64、これは警告を生成しません:

[NSString stringWithFormat:@"%lu", (unsigned long)myNSUInteger];

1

あなたも試すことができます:

NSInteger month = 1;
NSString *inStr = [NSString stringWithFormat: @"%ld", month];

0

答えは出ますが、状況によってはこれがNSIntegerから文字列を取得する興味深い方法になると思います

NSInteger value = 12;
NSString * string = [NSString stringWithFormat:@"%0.0f", (float)value];

0

この場合、NSNumberが適している場合があります。

NSString *inStr = [NSString stringWithFormat:@"%d", 
                    [NSNumber numberWithInteger:[month intValue]]];
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.