Saya ingin mengonversi menjadi int
a NSString
di Objective C.
Bagaimana saya bisa melakukan ini?
objective-c
Yogini
sumber
sumber
NSString *strValue = @(myInt).stringValue;
stringValue
, tetapi semua memilikidescription
- jadi sebagai praktik yang baik, lebih baik membiasakan diri untuk menggunakandescription
(NSNumber
tidak, tidak perlu khawatir di sini). Coba ini (description
akan mencetak tanggal, tapistringValue
akan macet):NSNumber *test = (id)[NSDate date]; NSLog(@"description: %@", test.description); NSLog(@"string value: %@", test.stringValue);
@(myInt)
adalah ekspresi kotak untuk[NSNumber numberWithInt:]
dan itu akan selalu mengembalikan NSNumber ketika diberi int.[NSNumber stringValue]
akan selalu mengembalikan NSString. Dalam kode komentar Anda, memaksa casting dengan(id)
dan menetapkan ke jenis yang berbeda adalah kesalahan pemrograman yang jelas: Anda tidak boleh melakukan itu. Ini seperti menipu metode dan kemudian membuat argumen tentang metode itu tidak melakukan apa yang awalnya dilakukan.!
) dan Anda akan tahu bahwa Anda salah melakukannya di Objective-C. Jika objektest
tersebut tidak dibuat oleh Anda, maka itu bukan tanggung jawab Anda. Anda dapat mencoba memanggilisKindOfClass:
semua parameter yang Anda terima, tetapi bahkan itu bisa dibodohi (dengan meneruskan struct alih-alih NSObject misalnya). Jadi jangan lakukan itu: cukup dokumentasikan secara eksplisit jenis yang diharapkan.(id)
adalah sebuah kesalahan, itu hanya untuk mendemonstrasikan poin bahwa IMOdescription
lebih disukai daripadastringValue
(saya mungkin salah, belum diprogram di ObjC selama bertahun-tahun)sumber
@(myInt)
adalah ekspresi kotak , ini mengembalikan NSNumber.Ini adalah salah satu dari banyak cara.
sumber
Jika string ini untuk presentasi kepada pengguna akhir, Anda harus menggunakan
NSNumberFormatter
. Ini akan menambahkan ribuan pemisah, dan akan menghormati pengaturan lokalisasi untuk pengguna:Di AS, misalnya, itu akan membuat string
10,000
, tetapi di Jerman, itu akan menjadi10.000
.sumber