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]];
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]];
Jawaban:
NSIntegers bukanlah objek, Anda mentransmisikannya ke long
, untuk mencocokkan definisi arsitektur 64-bit saat ini:
NSString *inStr = [NSString stringWithFormat: @"%ld", (long)month];
[@(integerValue) stringValue]
adalah pendekatan yang lebih bersih.
Cara Obj-C =):
NSString *inStr = [@(month) stringValue];
An NSInteger
memiliki metode stringValue
yang dapat digunakan bahkan dengan literal
NSString *integerAsString1 = [@12 stringValue];
NSInteger number = 13;
NSString *integerAsString2 = [@(number) stringValue];
Sangat sederhana. Bukan?
var integerAsString = String(integer)
%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 .
Cara mudah melakukannya:
NSInteger value = x;
NSString *string = [@(value) stringValue];
Di sini, @(value)
konversi yang diberikan NSInteger
menjadi NSNumber
objek yang Anda dapat memanggil fungsi yang diperlukan stringValue
,.
Saat mengompilasi dengan dukungan untuk arm64
, ini tidak akan menghasilkan peringatan:
[NSString stringWithFormat:@"%lu", (unsigned long)myNSUInteger];
Anda juga dapat mencoba:
NSInteger month = 1;
NSString *inStr = [NSString stringWithFormat: @"%ld", 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];