Я знаю, NSDictionaries
как то, что вам нужно key
, чтобы получить value
. Но как я могу перебрать все keys
и values
в a NSDictionary
, чтобы я знал, какие есть ключи и какие есть значения? Я знаю , что есть нечто , называемое для-в-петли в JavaScript
. Есть ли что-то подобное в Objective-C
?
ios
objective-c
foreach
iteration
nsdictionary
Алекс Чио
источник
источник
Swift
синтаксисе, обратитесь к этому сообщению: stackoverflow.com/a/24111700/419348Ответы:
Да,
NSDictionary
поддерживает быстрое перечисление. С Objective-C 2.0 вы можете сделать это:Альтернативный метод (который вы должны использовать, если вы нацелены на Mac OS X до 10.5, но вы все еще можете использовать на 10.5 и iPhone) - это использовать
NSEnumerator
:источник
Блочный подход позволяет избежать запуска алгоритма поиска для каждого ключа :
Даже несмотря на то, что
NSDictionary
он реализован в виде хеш-таблицы (что означает, что стоимость поиска элемента равнаO(1)
), поиск все равно замедляет вашу итерацию на постоянный коэффициент .Мои измерения показывают, что для словаря
d
чисел ...... суммируя числа с блочным подходом ...
... а не петлевой подход ...
... примерно на 40% быстрее .
РЕДАКТИРОВАТЬ : новый SDK (6.1+), кажется, оптимизирует итерацию цикла, так что подход цикла теперь примерно на 20% быстрее, чем подход блока , по крайней мере для простого случая выше.
источник
Это итерация с использованием блочного подхода:
С автозаполнением очень быстро установить, и вам не нужно беспокоиться о написании конверта итерации.
источник
NSMutableDictionary