Saya menemukan beberapa kesulitan dalam mengakses kunci dan nilai kamus yang bisa berubah di Objective-C.
Misalkan saya punya ini:
NSMutableDictionary *xyz=[[NSMutableDictionary alloc] init];
Saya dapat mengatur kunci dan nilai. Sekarang, saya hanya ingin mengakses setiap kunci dan nilai, tetapi saya tidak tahu jumlah kunci yang ditetapkan.
Dalam PHP itu sangat mudah, sesuatu sebagai berikut:
foreach ($xyz as $key => $value)
Bagaimana mungkin di Objective-C?
sumber
for (NSString* key in [xyz allKeys])
secara konseptual adalah hal yang sama.Hanya untuk tidak meninggalkan opsi 10.6+ untuk menghitung kunci dan nilai menggunakan blok ...
Jika Anda ingin tindakan terjadi secara bersamaan:
sumber
*stop
? Bagaimana Anda memanfaatkannya? Ada referensi?Jika Anda perlu mengubah kamus saat melakukan enumerasi:
sumber
allKeys
mengembalikan salinan kunci. Jadi aman untuk mematikan kamus.Cara termudah untuk menghitung kamus adalah
di mana
tDictionary
adalahNSDictionary
atauNSMutableDictionary
Anda ingin iterate.sumber
Saya sarankan Anda untuk membaca Enumerasi: Melintasi Elemen-elemen Koleksi sebagai bagian dari Panduan Pemrograman Koleksi untuk Kakao . Ada kode sampel untuk kebutuhan Anda.
sumber
Penghitungan cepat ditambahkan dalam 10,5 dan dalam OS iPhone, dan ini secara signifikan lebih cepat, bukan hanya gula sintaksis. Jika Anda harus menargetkan runtime yang lebih lama (yaitu 10,4 dan mundur), Anda harus menggunakan metode penghitungan lama:
Anda tidak melepaskan objek enumerator, dan Anda tidak dapat mengatur ulangnya. Jika Anda ingin memulai dari awal, Anda harus meminta objek enumerator baru dari kamus.
sumber
Anda dapat menggunakan
-[NSDictionary allKeys]
untuk mengakses semua kunci dan memutarnya.sumber