web-dev-qa-db-ja.com

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

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

私は次のことを試しました。ここで、月はNSIntegerです:

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

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

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

259
luvieere

Obj-C方法=):

NSString *inStr = [@(month) stringValue];
176

現代のObjective-C

NSIntegerには、リテラルでも使用できるメソッドstringValueがあります

NSString *integerAsString1 = [@12 stringValue];

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

とても簡単です。そうじゃない?

Swift

var integerAsString = String(integer)
71
MadNik

%zdはNSIntegerに対して機能します(NSUIntegerの場合は%tu)。32ビットと64ビットの両方のアーキテクチャでキャストも警告もありません。これが「 推奨方法 」ではない理由はわかりません。

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

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

8
Kevin

簡単な方法:

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

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

4

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

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

また試すことができます:

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

この場合、NSNumberが役立ちます。

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

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

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