Comment énumérer CFProperyList / CFDictionary clés
Je voudrais parcourir un CFDictionary (CFPropertyList) et obtenir toutes les valeurs sur un niveau spécifique.
Ce serait mon dictionnaire /bien-liste:
root
A
foo
0
bar
0
B
foo
10
bar
100
C
foo
20
bar
500
À l'aide de ObjC il ressemblerait à quelque chose comme ceci:
//dict is loaded with the dictionary below "root"
NSDictionary *dict = [...];
NSEnumerator *enumerator = [dict keyEnumerator];
NSString *key;
while (key = [enumerator nextObject])
{
NSLog(key);
};
Et il affiche la liste des touches de la console comme ceci:
Un B C
Comment obtenir ce résultat lors de l'utilisation de C/C++ sur le CoreFoundation niveau?
OriginalL'auteur Till | 2010-02-17
Vous devez vous connecter pour publier un commentaire.
Basé sur le code de SeeMyFriends:
Vous pouvez maintenant marcher à travers les pointeurs dans
keys[]
. N'oubliez pas defree(keys)
lorsque vous avez terminé.Rappelez-vous que les clés de dictionnaire ne sont pas des chaînes. Ils sont
void*
(c'est pourquoi ils ont pris la peine de castingkeysTypeRef
enkeys
). Notez également que je ne l'ai attrapé les clés ici, mais vous pouvez également obtenir des valeurs en même temps. Voir la SeeMyFriends code pour un exemple plus détaillé.Le CFDictionaryGetKeysAndValues méthode prend un pointeur vers un pointeur vers un tableau de clés. Pourquoi, alors, n'avez-vous pas passer l'adresse de la "keysTypeRef" pointeur (ce qui serait un pointeur de pointeur)?
CFDictionaryGetKeysAndValues
prend un pointeur vers un tableau de pointeurs (void **
), pas un pointeur vers un pointeur vers un tableau de pointeurs (void ***
). Rappelez-vous,CFTypeRef
lui-même est un pointeur.Pourriez-vous élaborer sur ce point? Que le lien est en bas.
Voir KennyTM de la réponse, qui est une approche plus facile que de le faire à la main.
OriginalL'auteur Rob Napier
Utilisation
CFDictionaryApplyFunction
pour parcourir un dictionnaire.D'accord. Une excellente approche pour une grande variété de problèmes.
OriginalL'auteur kennytm
CFCopyDescription est utile pour le Débogage...
OriginalL'auteur hewigovens