2010-07-07 12 views
5

Soy nuevo en la programación de Objective-C y me preguntaba si podría obtener ayuda.Obtener valores de un CFDictionary

Estoy tratando de acceder a los valores de un CFDictionary. He empezado mediante la implementación de código sugerido en this question

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

y me han mirado a la documentación más other posts, pero es un poco más allá de mí cómo hacerlo funcionar.

Lo que realmente necesito es un código de ejemplo que tome el código que ya tengo y lo use para imprimir una cadena de, por ejemplo, "Capacidad actual".

¿Algún ayuda?

Respuesta

11

CFDictionaryRef es "sin conexión de puente" con NSDictionary. Esto significa que puedes lanzar uno al otro indistintamente. En otras palabras:

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

Si (por alguna razón) que necesita para mantenerse en el nivel CoreFoundation (que no es inaudita), que tendría que utilizar algo así como CFDictionaryGetValue().

+0

Hola Dave, ¡Muchas gracias por volver tan rápido! he intentado implementar el código utilizando una llave de IOPSKeys.h y tiene un (nulo) Respuesta: \t NSDictionary * PowerDic = (NSDictionary *) IOPSGetPowerSourceDescription (array, r); \t NSString * aValue = [powerDic objectForKey: @ "Max Capacity"]; \t ¿Podría ser más específico sobre cómo hacer que esto funcione? Además, considero que CFDictionaryGetValue() es aún más misterioso que NSDictionary, por lo que si tiene un fragmento de ejemplo rápido sobre cómo usarlo, sería increíble. ¡Gracias de nuevo por todo! ;) Eric –

+0

@Eric si 'aValue' es' nil', entonces o la clave no existe en el diccionario o el diccionario en sí es 'nil'. En cuanto a 'CFDictionaryGetValue()', el primer parámetro de la función es 'CFDictionaryRef', el segundo es la clave y el valor de retorno es el valor. –

+0

Gracias por la ayuda. Me da la impresión de que mi diccionario es nulo por alguna razón. Voy a investigarlo. Si, de improviso, puede pensar en alguna razón por la que esto podría ser, soy todo oídos;) ¡Gracias de nuevo! –

Cuestiones relacionadas