Когда я использую 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++.
Первая дает вам строку, вторая дает вам URL-адрес. Используйте функцию CFURLCopyFileSystemPath
чтобы получить правильный путь к файлу из URL-адреса файла.
CFStringRef filepath = CFURLCopyFileSystemPath(path2, kCFURLPOSIXPathStyle);
Использовать CFURLCopyPath()
:
CFURLRef url = CFBundleCopyResourcesDirectoryURL(CFBundleGetMainBundle());
CFStringRef path = CFURLCopyPath(url);