2016-03-29 2 views
0

Я разрабатываю приложение для iPhone для аудиоплеера. Я хочу дать некоторые варианты пользователю, чтобы они могли прослушивать песню/музыку путем потоковой передачи, или они могут загружать аудиофайл и хранить в базе данных sqlite. Я знаю, как программно передавать потоки аудиофайлов в приложении. Но я не знаю, как сохранить загруженный аудиофайл в базе данных sqlite с помощью BLOB. Кроме того, после сохранения аудиофайла в sqlite DB мне нужно получить аудиофайл и воспроизвести песню. Как получить аудиофайл из базы данных sqlite?Как сохранить аудиофайл в базе данных sqlite в iOS

Это мой код для загрузки аудиофайла.

NSURL *url = [NSURL URLWithString:@"http://www.fileurl.com/example.mp3"]; 

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 

[request setDownloadDestinationPath:[NSString stringWithFormat:@"%@",dataPath]]; 

[request setDelegate:self]; 

[request startAsynchronous]; 
+0

Почему вы хотите сохранить его в базе данных? Хранение большого количества двоичных данных в реляционной базе данных не является хорошей идеей; что обычно делается, это хранение данных в обычном файле и просто сохранение его имени в базе данных. – trojanfoe

+0

@trojanfoe Спасибо за ваш ответ. пожалуйста, дайте мне правильное руководство. Я совершенно новичок в разработке iOS. – satya

+0

С iOS ничего не происходит; У меня был бы такой же комментарий, независимо от платформы/языка/и т. Д. – trojanfoe

ответ

2

Я не рекомендую хранить двоичные файлы в базе данных как капли. это вызовет у вас проблемы с ростом размера файла базы данных в будущем. Вам придется реализовать интеллектуальную вакуумную операцию, которая очень мала при больших объемах данных. Мое сильное мнение: файлы должны храниться в файловой системе. Сохраните файл в папке «Документы приложений» и сохраните ссылку на них в базе данных.

+1

И убедитесь, что вы не храните полный путь к файлу данных ... – trojanfoe

+0

@heximal Спасибо за руководство. но я запутался, как хранить файл в папке «Документы приложений», вы предоставите какой-либо пример кода. – satya

+0

@heximal Я не могу понять, как хранить аудиофайл в sqlite DB и как извлекать аудиофайл из sqlite DB, вы дадите мне пример или пример кода. я постараюсь понять .. Заранее спасибо – satya

0

Вы можете скачать файл и написать аудиофайл с помощью NSDocumentDirectory в приложении. Документы папку как

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *path = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"audio.mp3"]]; 
[{your audio file in NSData} writeToFile:path atomically:YES]; 

теперь хранить только «audio.mp3» в базе данных

при извлечении данных из базы данных, которые дают вам имя как

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *path = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:{database store name}]]; 

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

+0

Спасибо за ваш ответ. теперь, как получить аудиофайл из sqlite DB – satya

+0

Зачем вам хранить файлы в папке с документами? – trojanfoe

+0

вы не можете хранить файл в базе данных. напишите этот файл в документе Dic. и просто получите путь записи и сохраните этот путь в базе данных. –