2010-07-07 15 views
5

Sono nuovo nella programmazione Objective-C e mi chiedevo se potevo ricevere aiuto.Ottenere valori da un CFDictionary

Sto provando ad accedere ai valori da un CFDictionary. Ho iniziato implementando il codice suggerito in this question

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

e ho guardato la documentazione più other posts, ma è un po 'al di là di me come lavorare.

Quello che mi serve davvero è un codice di esempio che prende il codice che ho già e lo utilizza per stampare una stringa di, ad esempio, "Capacità attuale".

Qualsiasi aiuto?

risposta

11

CFDictionaryRef è "a pagamento senza pedaggio" con NSDictionary. Ciò significa che puoi scambiare l'uno con l'altro in modo intercambiabile. In altre parole:

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

Se (per qualche motivo) è necessario rimanere al livello CoreFoundation (che non è inaudito), utilizza qualcosa come CFDictionaryGetValue().

+0

Ciao Dave, Grazie mille per avermi riportato così in fretta! ho provato l'implementazione del codice usando una chiave da IOPSKeys.h e ottenuto un (null) Risposta: \t NSDictionary * powerDic = (NSDictionary *) IOPSGetPowerSourceDescription (array, r); \t NSString * aValue = [powerDic objectForKey: @ "Max Capacity"]; \t Potresti essere più specifico su come farlo funzionare? Inoltre, trovo CFDictionaryGetValue() ancora più misterioso di NSDictionary, quindi se hai un breve esempio di come usarlo, sarebbe fantastico. Grazie ancora per tutto! ;) Eric –

+0

@Eric se 'aValue' è' nil', quindi la chiave non esiste nel dizionario o il dizionario stesso è 'nil'. Per quanto riguarda 'CFDictionaryGetValue()', il primo parametro della funzione è 'CFDictionaryRef', il secondo è la chiave, e il valore restituito è il valore. –

+0

Grazie per l'aiuto. Ho l'impressione che il mio dizionario sia nullo per qualche motivo. Ho intenzione di esaminarlo. Se, a caso, puoi pensare a qualsiasi motivo per cui questo potrebbe essere, sono tutto orecchie;) Grazie ancora! –

Problemi correlati