Мне нужно получить доступ к файловым «данным» внутри содержимого файла пакета, который является файлом проекта, используемым другим приложением. Пакет может находиться в любом месте на любом доступном томе. SO в моем приложении Я прошу пользователя найти его проект, поэтому я получаю путь к проекту. Структура внутри файла проекта всегда одна и та же. Таким образом, я мог бы найти файл данных, добавив базовый путь проекта к пути его каталогов содержимого до файла данных.Доступ к файлам внутри пакета с NSURL
Но когда я печатаю путь, получаю все каталоги в порядке, но имя файла пакета снимается. Если я печатаю только базовый путь, я получаю правильный путь, включая пакет в конце. Он, как и его состояние, появляется в середине пути.
Я также пробовал [NSBundle bundleWithPath]
, но он возвращает nul
. Хотя искатель не рассматривает файл проекта как пакет, а как файл пакета, это был всего лишь последний звонок в отчаянии.
Вот код:
` NSOpenPanel *getPath = [NSOpenPanel openPanel];
NSArray* fileTypes = [[NSArray alloc] initWithObjects:@"logicx", nil];
[getPath setCanChooseFiles:YES];
[getPath setCanChooseDirectories:NO];
[getPath setTreatsFilePackagesAsDirectories:NO];
[getPath setTitle:@"Select your Logic Pro X project file"];
[getPath setAllowedFileTypes:fileTypes];
[getPath setCanCreateDirectories:YES];
NSInteger clicked = [getPath runModal];
if (clicked == NSFileHandlingPanelOKButton) {
for (NSURL *basePath in [getPath URLs]){
NSURL *url = [NSURL URLWithString:(@"Alternatives/000/ProjectData") relativeToURL:basePath];
// "Альтернативы/000/сотрудничестваСбор" является Подпуть из файла пакета
NSURL *absURL = [url absoluteURL];
NSLog(@"absURL = %@",absURL); `
Проект имя файла пакета является: «Track Patch. logicx»
Если я печатаю basePath
я получаю: file:///Volumes/Media/Music/Logic/Track%20Patch.logicx
Если я печатаю absURL
, который является искомым путем, я получаю absURL = file:///Volumes/Media/Music/Logic/Alternatives/000/ProjectData
Патч Патч был отброшен здесь.
Если я напечатать URL (указатель) я получаю это absURL = Alternatives/000/ProjectData -- file:///Volumes/Media/Music/Logic/Track%20Patch.logicx
Таким образом, путь переворачивается, который заставляет меня думать, есть проблема с функцией [NSURL URLWithString: relativeToURL:basePath];
. что значит --
?
Любая помощь будет принята с благодарностью.
Я действительно путают о том, что вы спрашиваете. Является ли„Альтернативы/000/сотрудничестваСбор“подпуть вы хотите взглянуть на внутри упаковки? –
Да exaclty, извините, если я не clrear достаточно, я собираюсь отредактировать сообщение, чтобы сделать это ясно. спасибо – user306147