Como iterar sobre um dicionário sem conhecer as chaves, enquanto fica com chave e objeto?
-
28-09-2019 - |
Pergunta
Eu tenho um nsdictionary e quero iterar sobre os objetos. Mas, ao mesmo tempo, preciso conhecer a chave do dicionário.
Lembro que havia uma forma especial e sofisticada de enumeração rápida, mas esqueci a sintaxe exata.
Alguém?
Solução
Eu acho que o que você quer é algo assim:
for (id key in dictionary) {
NSLog(@"key: %@, value: %@", key, [dictionary objectForKey:key]);
}
Tirado de aqui.
Outras dicas
Esta também é uma boa escolha se você gosta de blocos.
[dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
}]
for (id key in mydictionary) {
id mything = [mydictionary objectForKey:key];
}
KeyEnumerator Retorna um objeto que permite iterar através de cada uma das chaves no dicionário. A partir de aqui
Que eu saiba, no momento em que você fez a pergunta, havia apenas uma maneira de atravessar chaves e valores ao mesmo tempo: CFDictionaryApplyFunction
.
O uso dessa função fundamental envolve um ponteiro de função C feia para o corpo do loop e muito fundição não-incorreta, mas com pedágio livre.
@zekel tem o maneira moderna de iterando um dicionário. Vote dele!