2016-12-13 5 views
2

アプリが何百ものオーディオファイルを必要とする場合(小さすぎる、5-25KBの場合)、アセットカタログやドキュメントディレクトリに置く方が良いでしょうか?私は両方のアプローチを試しましたが、それほど違わないように見えます。プロジェクトナビゲータで何百ものファイルを管理するのは苦痛で、両方のアプリケーションファイルサイズが同じです。xcassetsまたはドキュメントディレクトリにiOSアプリのオーディオファイルアプリを保存しますか?

+0

これらのファイルは、ユーザーが最初にアプリケーションをインストールしたときに配置されるように、アプリケーションに含めますか?また、ユーザーがアプリを最初に起動したときにアプリがダウンロードするファイルはありますか? – rmaddy

+1

本当にあなたはドキュメントディレクトリを意味していますか?これは、最初にアプリケーションが起動されたときに作成された空の読み取り/書き込みディレクトリです。アセットカタログは読み取り専用で、コンテンツはアプリバンドルに保存されます。これらのサウンドファイルがアプリケーションに付属していれば、それらをバンドルからコピーして、ドキュメントディレクトリにコピーする必要があります。 –

+0

@rmaddyの場合、ファイルはアプリケーションに含まれています。 – Steve

答えて

1

これまでのところ、オーディオファイルをアプリケーションバンドルに入れるか、アプリケーションバンドルのアセットカタログ部分に入れるかに影響するものが1つ見つかりました。

アセットカタログにオーディオファイルを置くと、オーディオファイルはデータとして使用できますが、URLはありません。私が今理解しているように、URLが必要な場合は、データを抽出してファイルを作成する必要があります。これは二重の作業です。

「単に」アプリケーションバンドルにオーディオファイルを置いたときに自動的に利用できるURLがあると、より多くのオプションが提供されます。 AVPlayerItemでAVQueuePlayerを使うのと同じです。 AVPlayerItemはデータではなくURLのみを取ります。 AVAudioPlayerDelegateのコードを書き込む必要がありますが、AVQueuePlayerでは、AVPlayerItemの配列を提供するだけですが、アセットカタログから順番にオーディオファイルを再生したい場合は、AVAudioPlayerDelegateのコードを記述する必要があります。

私は参照するURLを持つ利点があるかもしれないと思うし、資産カタログがまだ持っている利点を見ていないので、私の意見は変更される可能性があります。

2

あなたのアプリケーションにオーディオファイルをバンドルしたいので、ドキュメントフォルダは使用できません。 Documentsフォルダの使用は、アプリがApp Storeからインストールされ、ユーザによって実行された後にのみ使用できるランタイム機能です。

ファイルをアプリケーションに含めてすぐに存在するようにするには、アプリケーションのリソースバンドルの一部である必要があります。アセットカタログを使用するか、単にバンドルに保存するかはあなた次第ですが、初めてアプリケーションを実行するまでドキュメントフォルダがないため、ドキュメントフォルダにパッケージ化することはできません。

+0

私の間違いは、なんらかの理由で、オーディオファイルをプロジェクトナビゲータにコピーしたときに、ドキュメントディレクトリにファイルが作成されたと思いました。これはバンドルの一部です。バンドルとカタログには違いがありますか? – Steve

関連する問題