2012-04-27 15 views
0

私はこれを初めて使っていますので、簡単にするために私のメインに音を加えようとしています。オーディオを再生しようとするとファイルが見つかりません

私が知る限り、次のコードはうまくいくはずですが、実行すると「エラードメイン= NSOSStatusErrorDomainコード= -43」というエラーメッセージが表示されます。操作を完了できませんでした。 (OSStatusエラー-43。) "(ファイルが見つかりません)"

私はさまざまなオーディオファイルとフォーマットでそれを試しました - Xcodeのプロジェクトに追加されましたが、なぜ私のG1を見つけられないのか分かりません.WAV

AVAudioPlayer *audioPlayer; 

     NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"/G1.wav"]]; 

     NSError *error; 
     audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error]; 
     audioPlayer.numberOfLoops = -1; 

     if (audioPlayer == nil) 
      NSLog([error description]); 
     else 
      [audioPlayer play]; 

EDITはNSBundleとmainBundleの参照を削除 - 私の誤解

+0

アプリバンドルを見ると、実際にファイルがWhatever.app/Contents/Resources/G1.wavになりますか?そうでない場合は、「ファイルが見つかりません」というエラーが出るのです。解決策は、ファイルを間違った場所に取得するためにXcodeで間違っていることを理解することです。そうであれば、別の問題があります。それが何であるか分かっていれば、診断するのがずっと簡単になるでしょう。 – abarnert

+0

だから、私は混乱して、NSBundleラインが動作していないときにそれを追加したことをかなり確信しています。私は今、行を 'NSURL * url = [NSURL fileURLWithPath:[NSString stringWithFormat:@ "G1.wav"]];'それは動作しません。私はアプリのバンドルを持っていません。私がやったのは、G1.wavファイルを私のSupporting Fileにドラッグして、上記の行が正しいと仮定した...だが悲しいことにファイルが見つかりません。 –

+0

コマンドラインからココアベースのプロジェクトに移動することで修正しました。それは私が実際にバンドルを参照できることを意味しました。 助けてくれてありがとう –

答えて

2

あなたはこれでオフに良いかもしれない:

NSString *path = [[NSBundle mainBundle] pathForResource:@"G1" ofType:@"wav"]; 
NSURL *url = [NSURL fileURLWithPath:path]; 
... 

pathForResource:ofType:を使用して、あなたがする必要はありませんあなたのバンドルの階層がどこにあるのか心配してください。 APIコールはそれを把握します。あなたのコードでは、resourcePathが戻ってきたものは明らかに正しい経路ではありません。

実際に何が起こっているのかを確認するために、ここにもNSLog()コールを追加することもできます。

+0

OS X 10.5またはiOS 3に対処する必要がない限り、URLForResource:withExtension:を直接呼び出すことができるときは、結果としてpathForResource:ofType:およびfileURLWithPath:を呼び出す正当な理由はありません。さらに重要なのは、元のコードとまったく同じパスを別の方法で指定しているため、これは実際にユーザーの問題を解決するものではありません。 – abarnert

+0

@abamert: 'URLForResource:withExtension:'は私が答えたときに最初に気になったものではありませんでした。それは明らかにここで使うのが良いことです。あなたの第二のポイントには、私は同意しません。 OPは 'resourcePath'の結果とファイル名を連結してパスを構築しています。 'resourcePath'はリソースを含むディレクトリへのパスであり、リソース固有のパスではありません。 –

+0

助けを借りてくれてありがとう、私は束に参照することができるように私はココアベースのアプリに移動してそれを修正しました。私は、コマンドラインは、ファイルをより正確に指示する必要があると思う。 –