解析CFMutableDictionary键
问题描述:
它的工作原理,我回来:
{ "9dc7b780-9ec0-11d4-a54f-000a27052861" = "IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"; }
但接下来我需要做的只是得到如下部分:9dc7b780-9ec0-11d4-a54f-000a27052861
任何人都可以帮助我解决这个问题吗?
答
这里CFDictionaryGetValue正在返回CFDictionaryRef类型的另一个对象(而不是你键入的字符串)。所以“9dc7b780-9ec0-11d4-a54f-000a27052861”是该字典中的关键。你应该像下面这样做:
CFTypeRef sn = (CFTypeRef)CFDictionaryGetValue(child_props, CFSTR("IOCFPlugInTypes"));
if (CFDictionaryGetTypeID() == CFGetTypeID(sn))
{
int dictSize = CFDictionaryGetCount(sn);
CFStringRef * keys = (CFStringRef*)malloc (dictSize * sizeof (CFStringRef));
CFDictionaryGetKeysAndValues (sn, keys, NULL);
for (int i = 0; i < dictSize; i++)
{
CFShow(keys[i]);
}
}