Bagaimana seseorang mengonversi NSInteger
ke NSString
tipe data?
Saya mencoba yang berikut ini, di mana bulan adalah NSInteger
:
NSString *inStr = [NSString stringWithFormat:@"%d", [month intValue]];
NSIntegers bukanlah objek, Anda mentransmisikannya ke long
, untuk mencocokkan definisi arsitektur 64-bit saat ini:
NSString *inStr = [NSString stringWithFormat: @"%ld", (long)month];
Format specifies type 'int' but the argument has type 'NSInteger *'(aka 'int *')
. Sebaliknya menurut dokumen Apple , saya pergi denganNSString *inStr = [NSString stringWithFormat:@"%d", (int)month];
[@(integerValue) stringValue]
adalah pendekatan yang lebih bersih.Cara Obj-C =):
NSString *inStr = [@(month) stringValue];
sumber
Modern Objective-C
An
NSInteger
memiliki metodestringValue
yang dapat digunakan bahkan dengan literalNSString *integerAsString1 = [@12 stringValue]; NSInteger number = 13; NSString *integerAsString2 = [@(number) stringValue];
Sangat sederhana. Bukan?
Cepat
var integerAsString = String(integer)
sumber
%zd
berfungsi untuk NSIntegers (%tu
untuk NSUInteger) tanpa cast dan peringatan pada arsitektur 32-bit dan 64-bit. Saya tidak tahu mengapa ini bukan " cara yang disarankan ".NSString *string = [NSString stringWithFormat:@"%zd", month];
Jika Anda tertarik dengan mengapa ini berhasil, lihat pertanyaan ini .
sumber
Cara mudah melakukannya:
NSInteger value = x; NSString *string = [@(value) stringValue];
Di sini,
@(value)
konversi yang diberikanNSInteger
menjadiNSNumber
objek yang Anda dapat memanggil fungsi yang diperlukanstringValue
,.sumber
Saat mengompilasi dengan dukungan untuk
arm64
, ini tidak akan menghasilkan peringatan:[NSString stringWithFormat:@"%lu", (unsigned long)myNSUInteger];
sumber
Anda juga dapat mencoba:
NSInteger month = 1; NSString *inStr = [NSString stringWithFormat: @"%ld", month];
sumber
Jawabannya diberikan tetapi pikirkan bahwa untuk beberapa situasi ini juga akan menjadi cara yang menarik untuk mendapatkan string dari NSInteger
NSInteger value = 12; NSString * string = [NSString stringWithFormat:@"%0.0f", (float)value];
sumber
NSNumber mungkin baik untuk Anda dalam kasus ini.
NSString *inStr = [NSString stringWithFormat:@"%d", [NSNumber numberWithInteger:[month intValue]]];
sumber