Saya tahu NSDictionaries
sebagai sesuatu di mana Anda membutuhkan key
untuk mendapatkan value
. Tetapi bagaimana saya bisa mengulangi semua keys
dan values
dalam NSDictionary
, sehingga saya tahu kunci apa yang ada, dan nilai apa yang ada? Saya tahu ada sesuatu yang disebut for-in-loop in JavaScript
. Apakah ada sesuatu yang serupa Objective-C
?
ios
objective-c
foreach
iteration
nsdictionary
Alex Cio
sumber
sumber
Swift
sintaks, lihat posting ini: stackoverflow.com/a/24111700/419348Jawaban:
Ya,
NSDictionary
mendukung penghitungan cepat. Dengan Objective-C 2.0, Anda dapat melakukan ini:Metode alternatif (yang harus Anda gunakan jika Anda menargetkan Mac OS X pra-10.5, tetapi Anda masih bisa menggunakan pada 10.5 dan iPhone) adalah dengan menggunakan
NSEnumerator
:sumber
Pendekatan blok menghindari menjalankan algoritma pencarian untuk setiap kunci :
Meskipun
NSDictionary
diimplementasikan sebagai hashtable (yang berarti bahwa biaya mencari elemen adalahO(1)
), pencarian masih memperlambat iterasi Anda dengan faktor konstan .Pengukuran saya menunjukkan bahwa untuk kamus
d
angka ...... merangkum angka-angka dengan pendekatan blok ...
... daripada pendekatan loop ...
... sekitar 40% lebih cepat .
EDIT : SDK baru (6.1+) muncul untuk mengoptimalkan iterasi loop, sehingga pendekatan loop sekarang sekitar 20% lebih cepat daripada pendekatan blok , setidaknya untuk kasus sederhana di atas.
sumber
Ini adalah iterasi menggunakan pendekatan blok:
Dengan pelengkapan otomatis sangat cepat untuk diatur, dan Anda tidak perlu khawatir menulis amplop iterasi.
sumber
NSMutableDictionary
dalam proses