回答:
プリミティブは、@()式を使用してオブジェクトに変換できます。したがって、最短の方法は、メソッドで文字列表現に変換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;