Bagaimana cara menaikkan NSNumber?
yaitu myNSNumber ++
objective-c
TheLearner
sumber
sumber
NSNumber *
, selalu periksa untuk melihat apakah tipe primitif sudah cukup.Jawaban:
Pembaruan: FYI, saya pribadi lebih suka jawaban satu baris BoltClock dan DarkDusts. Mereka lebih ringkas, dan tidak memerlukan variabel tambahan.
Untuk menaikkan
NSNumber
, Anda harus mendapatkan nilainya, menambah itu, dan menyimpannya di yang baruNSNumber
.Misalnya, untuk
NSNumber
memegang integer:Atau untuk
NSNumber
memegang nomor floating-point:sumber
...
kepanjangannya? Itu referensi pseudo-code kan?...
...
hanyalah placeholder untuk nomor apa pun yang Anda inginkan.NSNumber
objek tidak bisa diubah; hal terbaik yang dapat Anda lakukan adalah mengambil nilai primitif, menaikkannya kemudian membungkus hasilnya ke dalamNSNumber
objeknya sendiri :sumber
Bagi siapa saja yang menggunakan Xcode versi terbaru (menulis ini sebagai 4.4.1, SDK 5.1), dengan penggunaan literal objek, Anda dapat membersihkan kode bahkan sedikit lagi ...
Masih agak menyebalkan untuk berurusan dengan tinju dan membuka kotak segalanya untuk melakukan operasi sederhana, tetapi itu menjadi lebih baik, atau setidaknya lebih pendek.
sumber
NSNumbers tidak dapat diubah, Anda harus membuat instance baru.
sumber
Gabungkan semuanya, dan Anda memiliki:
sumber
NSNumber
objek tidak dapat diubah (?)Saya suka ekspresi titik karena lebih ringkas dan itulah mengapa IOS mendukungnya sejak awal:
sumber
Jika Anda menggunakannya untuk menyimpan nilai integral:
Untuk item floating point, jawaban singkatnya adalah sebagai berikut, tetapi itu ide yang buruk untuk melakukan ini, Anda akan kehilangan ketepatan dan jika Anda melakukan perbandingan apa pun nanti seperti [myNSNumber isEqual: @ (4.5)] Anda mungkin akan terkejut :
Jika Anda perlu melakukan matematika pada bilangan floating point yang direpresentasikan sebagai objek di Objective-C (yaitu jika Anda perlu meletakkannya dalam array, kamus, dll.), Anda harus menggunakan
NSDecimalNumber
.sumber
Gunakan kategori untuk memudahkan penggunaan di masa mendatang. Ini ide dasarnya.
sumber
Banyak sekali info bagus di jawaban pertanyaan ini. Saya menggunakan jawaban yang dipilih dalam kode saya dan berhasil. Kemudian saya mulai membaca sisa posting dan banyak menyederhanakan kodenya. Ini sedikit lebih sulit untuk dibaca jika Anda tidak terbiasa dengan perubahan pada notasi yang diperkenalkan di Xcode 5, tetapi jauh lebih bersih. Saya mungkin bisa membuatnya hanya satu baris, tapi kemudian agak terlalu sulit untuk memikirkan apa yang saya lakukan.
Saya menyimpan NSNumber dalam kamus dan saya ingin menambahnya. Saya mengerti, mengubahnya menjadi int, menaikkannya sambil mengubahnya menjadi NSNumber, lalu memasukkannya kembali ke kamus.
Kode Lama
Kode baru
sumber