Воспроизведение аудио из созданного каталога

Привет, я использую следующий код для воспроизведения аудиофайла

NSString *stringPath = [[NSBundle mainBundle]pathForResource:@"audioFileName" ofType:@"mp3" inDirectory:@"/Downloads"];
    NSURL *url = [NSURL fileURLWithPath:stringPath];
    NSError *error;

    avPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:url error:&error];
    avPlayer.delegate = self;
    [avPlayer play];

Но я получаю сообщение об ошибке, потому что мои аудиофайлы находятся в папке «Загрузки». Путь: AppName/Library/ApplicationSupport/Downloads/audioFileName.mp3

Ошибка, которую я получаю, заключается в том, что строка stringPath равна нулю, вероятно, потому, что эта строка кода написана неправильно. Я точно знаю, что файл там!

Вот изображение с использованием программного обеспечения для просмотра файлов

введите здесь описание изображения

Итак, мой вопрос, как изменить приведенный выше код, чтобы он указывал на мой каталог загрузок при воспроизведении аудиофайла. Спасибо

Я даже пытался поставить весь путь вот так.

NSString *stringPath = [[NSBundle mainBundle]pathForResource:@"audioFileName" ofType:@"mp3" inDirectory:@"Library/Application Support/Downloads"];

Обновление статуса!

Теперь я делаю следующее, и ошибка исчезла, но я не уверен, что она все еще указывает на правильную папку, и если да, то возможно ли, что у меня нет разрешений на использование файлов в ней. Это каталог, который я создал, поэтому меняет ли права доступа к нему после его создания, что-то, что я тоже делал?

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);

NSString *libraryDirectory = [paths objectAtIndex:0];

NSString *stringPath = [[libraryDirectory stringByAppendingPathComponent:@"Downloads"] stringByAppendingPathComponent:@"audioFileName.mp3"];

person 4GetFullOf    schedule 21.01.2014    source источник


Ответы (1)


Я считаю, что pathForResource предназначен только для файлов, которые вы включаете в свое приложение. Вы создали аудиофайл в папке «Библиотека», которого нет в вашей папке .app... поэтому вы можете попробовать использовать что-то вроде:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);

NSString *libraryDirectory = [paths objectAtIndex:0];

NSString *stringPath = [[libraryDirectory stringByAppendingPathComponent:@"Downloads"] stringByAppendingPathComponent:@"audioFileName.mp3"];
person ecsos    schedule 21.01.2014
comment
хм, это устранило ошибку, НО ничего не воспроизводится, когда я нажимаю кнопку воспроизведения? Еще раз я точно знаю, что мой аудиофайл там не уверен, почему я ничего не слышу? Есть идеи? - person 4GetFullOf; 22.01.2014
comment
Возможно ли, что созданный мной каталог не имеет прав на использование файлов внутри него? - person 4GetFullOf; 22.01.2014
comment
это не должно быть разрешения, так как вы его создали. вот похожий поток, и вы можете попробовать использовать NSData, как они это делают: stackoverflow.com/questions/10195410/ - person ecsos; 22.01.2014
comment
Спасибо, но опять не повезло - person 4GetFullOf; 22.01.2014
comment
Я изменил ваш ответ. Это было почти правильно, но путь был неправильным. /var/mobile/Applications/1E39375E-0D1D-4436-B714-8A6EB023A74E/Library/Downloads — это то, что я получал, поэтому мне просто нужно было добавить поддержку приложений непосредственно перед этим. - person 4GetFullOf; 22.01.2014