Невозможно получить доступ к комплекту ресурсов из пользовательской среды, используя 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);
Другие вопросы по тегам