Есть ли эквивалент CoreFoundation, который генерирует ту же строку при вызове [[NSBundle mainBundle] bundlePath]?

0

Когда я использую NSBundle:

NSString *path1 = [[NSBundle mainBundle] bundlePath];

путь1

@"/Users/username/Library/Application Support/iPhone Simulator/7.0.3-64/Applications/2EDB/appname.app"

Когда я использую CFBundle:

    CFURLRef path2 =CFBundleCopyResourcesDirectoryURL(CFBundleGetMainBundle());

path2 имеет место

@"file:///Users/username/Library/Application%20Support/iPhone%20Simulator/7.0.3-64/Applications/2EDB/appname.app/"

Есть ли эквивалент CoreFoundation, который я могу использовать для создания той же строки, что и path1? (Без "файлов://" и " %20" в качестве правильных пробелов.) Или мне нужно сделать дополнительную обработку, чтобы удалить их самостоятельно? Мне нужно использовать его в классе c++.

Теги:

2 ответа

1
Лучший ответ

Первая дает вам строку, вторая дает вам URL-адрес. Используйте функцию CFURLCopyFileSystemPath чтобы получить правильный путь к файлу из URL-адреса файла.

CFStringRef filepath = CFURLCopyFileSystemPath(path2, kCFURLPOSIXPathStyle);
  • 0
    Да, это лучше, чем мой ответ.
0

Использовать CFURLCopyPath():

CFURLRef url = CFBundleCopyResourcesDirectoryURL(CFBundleGetMainBundle());
CFStringRef path = CFURLCopyPath(url);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню