2016-02-10 3 views
0

Мой проект имеет такую ​​структуру:проверить, если файл существует в папке проекта

my_project 
my_project 
    AppDelegate.m 
    AppDelegate.h 
    ... 
    Audio_folder 
    my_audio.mp3 

Так что я хочу, чтобы проверить, если звуковой файл существует или нет в Audio_folder. я могу сделать это с полным путем

BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:@"/Users/user/Desktop/my_project/my_project/Audio_folder/my_audio.mp3"]; 

, но как я могу достичь его с чем-то вроде

BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:@"Audio/my_audio.mp3"]; 

?

+0

@ "/ Audio_folder/my_audio.mp3" <- Это не должно работать? Поскольку это предполагает текущий каталог, который является вашим пути к проекту – bi0phaz3

+0

, вы уверены, что он будет сохранен там? в большинстве случаев внутри папки проекта (finder) все они будут на корне –

ответ

3

Единственный способ узнать, является ли доступна или нет во время выполнения используя NSBundle.

NSString *path = [[NSBundle mainBundle] pathForResource:@"my_audio" ofType:@"mp3"]; 
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:path]; 

В fileExists вы знаете, если он доступен.

Обязательно проверьте фазы сборки, если файл скопирован в комплект.

+0

говорит «использование незаявленного идентификатора pathAndFileName» – fabersky

+0

ok Я изменил его на «путь», и он работает! хороший! – fabersky

+0

отредактируйте его, чтобы я мог его принять – fabersky

0

NSFileManager не имеет абсолютно никакого доступа к папке проекта. Это полностью относится к папке, в которой находится приложение, или в котором хранятся документы, к которым он обращается.

Процесс сборки и фактический ход из приложения разделены между «разработчиком землей» и «землепользователем» ..

Единственным способом получить доступ к папке для разработчиков является хотя тупыми методы, которые бросают вызов окружающей среды песочницы. Даже если яблоко действительно разрешает временное исключение, маловероятно, что он останется в игре.

Единственный способ, которым я могу рекомендовать обмен два на стадии сборки, используя скрипт, который разделяет общую папку между двумя ...

+0

, так есть ли другой способ его достижения? – fabersky

+0

Единственный способ, насколько я знаю: (i) копировать файл со сборкой (или обрабатывать со сценарием), (ii) выводить как любой формат, который вам нужен (iii). За исключением ужасно сочлененных скриптов, чтобы обойти это, я не видел другого способа сделать это ... –

Смежные вопросы