Sé NSDictionariescomo algo donde necesitas un keypara obtener un value. Pero, ¿cómo puedo iterar sobre todo keysy valuesen a NSDictionary, para saber qué claves hay y qué valores hay? Sé que hay algo llamado for-in-loop in JavaScript. ¿Hay algo similar en Objective-C?
ios
objective-c
foreach
iteration
nsdictionary
Alex Cio
fuente
fuente

Swiftsintaxis, consulte esta publicación: stackoverflow.com/a/24111700/419348Respuestas:
Sí,
NSDictionaryadmite enumeración rápida. Con Objective-C 2.0, puede hacer esto:El método alternativo (que debe usar si se dirige a Mac OS X anterior a 10.5, pero aún puede usarlo en 10.5 y iPhone) es usar un
NSEnumerator:fuente
El enfoque de bloque evita ejecutar el algoritmo de búsqueda para cada clave :
Aunque
NSDictionaryse implementa como una tabla hash (lo que significa que el costo de buscar un elemento esO(1)), las búsquedas aún ralentizan su iteración por un factor constante .Mis medidas muestran que para un diccionario
dde números ...... resumiendo los números con el enfoque de bloque ...
... en lugar del enfoque de bucle ...
... es aproximadamente un 40% más rápido .
EDITAR : El nuevo SDK (6.1+) parece optimizar la iteración del bucle, por lo que el enfoque de bucle ahora es aproximadamente un 20% más rápido que el enfoque de bloque , al menos para el caso simple anterior.
fuente
Esta es una iteración usando el enfoque de bloque:
Con el autocompletado es muy rápido de configurar, y no tiene que preocuparse por escribir un sobre de iteración.
fuente
NSMutableDictionaryel proceso