2010-07-07 57 views
5

我是新來的Objective-C編程,想知道我是否可以得到一些幫助。從CFDictionary獲取值

我試圖從CFDictionary訪問值。我已經通過實施代碼開始提出在this question

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

,我已經看過的文件加上other posts,但它是一個有點超出我怎麼去解決它。

我真正需要的是一些示例代碼,它使用我已有的代碼並使用它來打印一個字符串,例如「當前容量」。

任何幫助?

回答

11

CFDictionaryRefNSDictionary是「免費橋接」。這意味着你可以互換地投射一個。換句話說:

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

如果(出於某種原因),你需要留在的CoreFoundation水平(這是不是聞所未聞的),你會使用類似CFDictionaryGetValue()

+0

嗨戴夫, 非常感謝回到我這麼快! 我試着使用實現從IOPSKeys.h的關鍵代碼,並得到了(空)響應: \t的NSDictionary * powerDic =(NSDictionary的*)IOPSGetPowerSourceDescription(陣列,R); \t NSString * aValue = [powerDic objectForKey:@「Max Capacity」]; \t 你能更具體地說明如何使這項工作? 此外,我發現CFDictionaryGetValue()比NSDictionary更神祕,所以如果你有一個如何使用它的快速示例片段,那將是非常棒的。 再次感謝您的一切! ;) Eric – 2010-07-07 16:13:40

+0

@Eric如果'aValue'爲'nil',那麼密鑰在字典中不存在或者字典本身是'nil'。至於'CFDictionaryGetValue()',函數的第一個參數是CFDictionaryRef,第二個參數是關鍵字,返回值是值。 – 2010-07-07 16:42:40

+0

感謝您的幫助。我得到的印象是,我的字典由於某種原因而爲零。我要去看看它。如果,不管怎樣,你可以想出任何可能的原因,我都是耳朵;) 再次感謝! – 2010-07-08 09:45:06