Невозможно получить доступ к комплекту ресурсов из пользовательской среды, используя CoreFoundation
Что я сделал
Я создал пользовательскую платформу iOS, которую мы будем называть CustomFramework.framework, а также сопутствующий пакет ресурсов для некоторых файлов sqlite с именем CustomFramework.bundle. Я добавил свой фреймворк и комплект ресурсов в другой проект, и он успешно собирается.
Что я пытаюсь сделать
Я пытаюсь получить доступ к комплекту ресурсов с помощью CoreFoundation. Затем я хочу выбрать конкретный файл sqlite и открыть его.
Что идет не так
В моей структуре есть файл под названием ResourceHelper.cpp. Здесь я хочу открыть файлы sqlite. Я пытаюсь получить ссылку на комплект CustomFramework.bundle. Для этого у меня есть эта строка:
CFBundleRef mainBundle = CFBundleGetBundleWithIdentifier(CFSTR("com.mycompany.CustomFramework"));
и в моем CustomFramework-Info.plist Bundle identifer
поле com.mycompany.CustomFramework
, Эта строка кода возвращает NULL; в отладчике это выглядит так mainBundle = (CFBundleRef) 0x0
,
Почему я не могу найти свой пакет ресурсов фреймворка?
Спасибо
1 ответ
В итоге я просто добавил имя пакета к основному пути пакета. Вот как это работает.
std::string dbName = "database";
std::string resourcePath = "CustomFramework.bundle/";
CFBundleRef mainBundle = CFBundleGetMainBundle();
CFStringRef cf_dbName = CFStringCreateWithCString(NULL, dbName.c_str(), kCFStringEncodingUTF8);
CFStringRef cf_path = CFStringCreateWithCString(NULL, resourcePath.c_str(), kCFStringEncodingUTF8);
CFURLRef url = CFBundleCopyResourceURL(mainBundle, cf_dbName, CFSTR("sqlite"), cf_path);