2016-03-29 14 views
0

私はオーディオプレーヤー用のiPhoneアプリケーションを開発しています。ストリーミングで曲/音楽を聴くことができるように、またはオーディオファイルをダウンロードしてsqliteデータベースに保存できるように、いくつかのオプションをユーザに与えたいと思います。私はプログラムでオーディオファイルをストリームする方法を知っています。しかし、BLOBを使用してダウンロードしたオーディオファイルをsqliteデータベースに格納する方法はわかりません。さらに、sqlite DBにオーディオファイルを格納した後、私はオーディオファイルを取得し、その曲を再生する必要があります。 sqlite DBからオーディオファイルを取得するにはどうすればよいですか?iOSのsqliteデータベースにオーディオファイルを保存するには

これは私のオーディオファイルをダウンロードするためのコードです。

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とは何の関係もありません。私はプラットフォーム/言語/ etcに関係なく同じコメントを持っています。 – trojanfoe

答えて

2

blobとしてバイナリファイルをデータベースに格納することはお勧めしません。 今後、データベースファイルのサイズが大きくなるにつれて問題が発生します。大量のデータ量では非常に遅いスマートな真空操作を実装する必要があります。 私の強い意見:ファイルはファイルシステムに保存する必要があります。ファイルをアプリケーションのDocumentsフォルダに保存し、データベースへのリンクを保存します。

+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:{database store name}]]; 

のようなノートに名前を与えるデータベースからデータを取得する際の文書が

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」を記憶アプリケーションを実行するたびにドキュメントのフォルダーのパスが変更されるため動作しません。

+0

あなたの応答をありがとう。今すぐsqlite DBからオーディオファイルを取得する方法 – satya

+0

なぜドキュメントフォルダにファイルを保存しますか? – trojanfoe

+0

データベースにファイルを格納できません。そのファイルを文書Dicに書き出します。書き込みパスを取得し、そのパスをデータベースに格納するだけです。 –

関連する問題