Saya menggunakan [NSNumber numberWithInt:42]
atau @(42)
mengonversi int ke NSNumber sebelum menambahkannya ke NSDictionary:
int intValue = 42;
NSNumber *numberValue = [NSNumber numberWithInt:intValue];
NSDictionary *dict = @{ @"integer" : numberValue };
Ketika saya mengambil nilai dari NSDictionary, bagaimana cara mengubahnya dari NSNumber kembali ke int?
NSNumber *number = dict[@"integer"];
int *intNumber = // ...?
Itu melempar pengecualian yang mengatakan casting diperlukan ketika saya melakukannya dengan cara ini:
int number = (int)dict[@"integer"];
objective-c
nsnumber
suse
sumber
sumber
[key intValue]
(kuncinya adalahNSNumber
)Anda harus tetap menggunakan
NSInteger
tipe data jika memungkinkan. Jadi Anda akan membuat angka seperti itu:Decoding bekerja dengan
integerValue
metode kemudian:sumber
NSInteger
?int
juga primitif, ya. Namun, jumlah maksimum yang diizinkan kurang ditentukan dengan tepat.NSInteger
pada dasarnya hanyalah sebuah alias untuk beberapa tipe integer primitif yang diketahui 32bit pada mesin 32bit dan 64bit pada perangkat 64bit.int
, tetapi tidak ada gunanya melakukannya, kecuali untuk berinteraksi dengan lib lintas platform. Dan bahkan kemudian sesuatu sepertiuint32_t
akan lebih baik untuk digunakan.Gunakan metode NSNumber
intValue
Berikut adalah dokumentasi referensi Apple
sumber
Pendekatan yang kurang bertele-tele:
sumber
Satu baris teruji:
sumber