Я сохраняю аудиоданные в каталоге Документы и пытаюсь их прочитать. Если я воспроизведу его сразу же, он будет успешно воспроизводиться, однако, если я начну новый сеанс и попытаюсь воспроизвести песню локально, это не удастся, даже если перечисление файлов в каталоге «Документы» показывает, что мой файл все еще существует. Обратите внимание, что файл воспроизводится из папки «Документы» одинаково (тот же код), если он воспроизводится сразу или во время нового сеанса.iOS - чтение аудиофайла из каталога документов
Вот как я сохранить аудиоданные в каталог документов:
+(void)writeDataToAudioFile:(NSData*)data forTrack:(MediaItem*)track
{
// filename looks like "[track_id].mp3"
NSString *fileName = [NSString stringWithFormat:@"%@.%@",track.sc_id,track.original_format];
NSString *pathName = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask,
YES) firstObject]
stringByAppendingPathComponent:fileName];
[[NSFileManager defaultManager] createFileAtPath:pathName
contents:data
attributes:nil];
}
Тогда в моей музыкальный плеер, я хочу, чтобы загрузить локальный URL для этого файла, чтобы инициализировать AVPlayer:
NSURL *url;
if(_currentTrack.is_local_item)
{
url = [NSURL fileURLWithPath:_currentTrack.local_file_path];
}
URL не создается должным образом, так как AVPlayer не воспроизводится. Кроме того, я пробовал каждый другой способ загрузить файл как данные в объект NSData, чтобы проверить размер байта, но пытаюсь получить доступ к файлу, поскольку данные всегда возвращают нуль. Тем не менее, файл существует, как если бы я использовал NSFileManager. Я могу перебирать элементы в каталоге «Документы» и печатать имена файлов/пути, проверяя, что путь, который я сохранил в «_currentTrack.local_file_path», существует. Опять же, если я воспроизведу файл сразу после сохранения файла на диск, он будет воспроизводиться.
Если есть больше информации, я могу предоставить, чтобы сделать это яснее. Большое спасибо.
«пытается получить доступ к файлу, поскольку данные всегда возвращают нуль». Это проблема, над которой работать. Начните с предположения, что 'NSData' всегда работает. Получите размер файла с помощью NSFileManager. Также запишите путь как время сохранения, так и время загрузки. Добавьте к вопросу вопрос, а затем посмотрите на каталог в Finder, если он запущен на симуляторе. Лучше всего создать небольшой метод для возврата пути к файлу, который устраняет возможные ошибки. В настоящее время кажется, что вы сохраняете путь и загружаете URL-адрес, а не отличную концепцию правильности. Плюс меньше кода и отсутствие дублирования - это хорошо. – zaph