2010-07-07 5 views
5

Je suis novice en programmation Objective-C et je me demandais si je pouvais obtenir de l'aide. J'essaie d'accéder aux valeurs d'un CFDictionary. J'ai commencé par la mise en œuvre du code suggéré dans this questionObtenir des valeurs à partir d'un CFDictionary

CFTypeRef r = IOPSCopyPowerSourcesInfo(); 
CFArrayRef array = IOPSCopyPowerSourcesList(r); 
CFDictionaryRef powerDic = IOPSGetPowerSourceDescription(array, r); 

et je l'ai regardé la documentation ainsi que other posts, mais il est un peu au-delà de moi comment ça marche. Ce dont j'ai vraiment besoin, c'est d'un exemple de code qui prend le code que j'ai déjà et l'utilise pour imprimer une chaîne de, par exemple, "Current Capacity".

Une aide?

Répondre

11

CFDictionaryRef est "sans pont" avec NSDictionary. Cela signifie que vous pouvez jeter l'un à l'autre de façon interchangeable. En d'autres termes:

... 
NSDictionary * powerDic = (NSDictionary *)IOPSGetPowerSourceDescription(array, r); 
NSString * aValue = [powerDic objectForKey:@"aKey"]; 

Si (pour une raison quelconque), vous devez rester au niveau CoreFoundation (ce qui est sans précédent), vous utiliseriez quelque chose comme CFDictionaryGetValue().

+0

Salut Dave, Merci beaucoup de me revenir si vite! J'ai essayé d'implémenter votre code à l'aide d'une clé de IOPSKeys.h et a obtenu une réponse (null): \t NSDictionary * powerDic = (NSDictionary *) IOPSGetPowerSourceDescription (tableau, r); \t NSString * aValue = [PowerDic objectForKey: @ "Capacité maximale"]; \t Pourriez-vous être plus précis au sujet de comment faire ce travail? En outre, je trouve CFDictionaryGetValue() encore plus mystérieux que NSDictionary, donc si vous avez un exemple rapide de comment l'utiliser, ce serait génial. Merci encore pour tout! ;) Eric –

+0

@Eric si 'aValue' est' nil', alors la clé n'existe pas dans le dictionnaire ou le dictionnaire lui-même est 'nil'. Pour 'CFDictionaryGetValue()', le premier paramètre de la fonction est 'CFDictionaryRef', le second est la clé et la valeur de retour est la valeur. –

+0

Merci pour l'aide. J'ai l'impression que mon dictionnaire est nul pour une raison quelconque. Je vais regarder dedans. Si, désinvolte, vous pouvez penser à une raison pour laquelle cela pourrait être, je suis tout ouïe;) Merci encore! –

Questions connexes