回答:
プリミティブは、@()
式を使用してオブジェクトに変換できます。したがって、最短の方法は、メソッドで文字列表現に変換int
しNSNumber
て取得するstringValue
ことです。
NSString *strValue = [@(myInt) stringValue];
または
NSString *strValue = @(myInt).stringValue;
stringValue
が、すべて持っているdescription
-ので、良い練習としてそれを使用していないに慣れる方が良いでしょうdescription
(NSNumber
、ここで心配する必要はありません)。これを試してください(description
日付は出力されますが、stringValue
クラッシュします):NSNumber *test = (id)[NSDate date]; NSLog(@"description: %@", test.description); NSLog(@"string value: %@", test.stringValue);
!
)を使用せずにコメントをSwiftに変換してみてください。Objective-Cで誤って実行していたことがわかります。オブジェクトtest
が自分で作成したものでない場合、それはあなたの責任ではありません。isKindOfClass:
受け取ったすべてのパラメーターを呼び出そうとするかもしれませんが、それでもだまされる可能性があります(たとえば、NSObjectではなくstructを渡すことによって)。そのため、そうしないでください。期待される型を明示的に文書化してください。
(id)
は間違いです。IMO description
が優先されるという点をデモするだけでしたstringValue
(私は間違っている可能性があり、ObjCで何年もプログラムされていません)
NSString *string = [NSString stringWithFormat:@"%d", theinteger];
この文字列がエンドユーザーへの表示用である場合は、を使用する必要がありますNSNumberFormatter
。これにより、数千のセパレータが追加され、ユーザーのローカリゼーション設定が尊重されます。
NSInteger n = 10000;
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = NSNumberFormatterDecimalStyle;
NSString *string = [formatter stringFromNumber:@(n)];
たとえば、米国では文字列を作成します10,000
が、ドイツではそれを作成します10.000
。
NSString *strValue = @(myInt).stringValue;