Я работаю в существующем приложении для iPhone, хотя мне нужно изменить код на C.
Я хочу использовать словарь в стандартном файле C, просто я не могу использовать NSDictionary, компилятор сказал, что он недействителенв c99 (поскольку заголовки Foundation / Foundation.h и Foundation / NSDictionary.h не могут быть найдены), но доступен CFDictionaryRef (заголовок coz CoreFoundation / CoreFoundation.h можно найти и импортировать).Затем я пытаюсь работать с CFDictionary, я не могу вставить пары ключ-значение в словарь, может ли кто-нибудь занять некоторое время и взглянуть на следующий код?Спасибо заранее !!
ps, вывод следующего кода:
Размер Dict: 0 Key: text.html, значение: 111
, что означаетпара значений не вставлена ...
CFMutableDictionaryRef dict = CFDictionaryCreateMutable(NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
printf("Dict size: %d\n", (int)((CFIndex)CFDictionaryGetCount(dict)));
int i = 111;
char c[] = "text.html";
const void *key = &c;
const void *value = &i;
printf("Key: %s, value: %d\n", key, *(int *)value);
CFDictionarySetValue(dict, key, value);
printf("Added\n");
printf("Dict size: %d\n", (int)((CFIndex)CFDictionaryGetCount(dict)));
value = (int *)CFDictionaryGetValue(dict, key);
printf("Value: %d\n", *(int *)value);
Спасибо за ваш ввод, следующий рабочий код.
// init dict CFMutableDictionaryRef dict =CFDictionaryCreateMutable (NULL, 0, & kCFTypeDictionaryKeyCallBacks, & kCFTypeDictionaryValueCallBacks);
//insert key-value
int i = 111;
const void *value = &i;
CFDictionaryAddValue(dict, CFSTR("text.html"), CFNumberCreate(NULL, kCFNumberSInt32Type, value));
CFNumberRef valueRef = CFDictionaryGetValue(dict, CFSTR("text.html"));
//get value based on key
int valuePtr;
CFNumberGetValue(valueRef, kCFNumberSInt32Type, (void *)&valuePtr);
printf("value: %d\n", valuePtr);