2011-08-03 10 views
6

問題:[NSBundle mainBundle] pathForResourceはNULL(0x0の)を返しNSBundle mainBundle pathForResource(そうでないかもしれないと同じ問題)

私はここで、このトピックに関する記事をたくさん読んで、私が見つけたものです:

  1. パスを取得しようとしているファイルがプロジェクトにあることを確認してください。チェックするには、プロジェクトファイルリストにファイルがない場合は、それをドラッグアンドドロップしてください。

  2. 読み込みしようとしているファイルがアプリにコピーされていることを確認してください。これを行うには、プロジェクトファイル(プロジェクト名が青いバー - >ターゲットをクリック - >ビルド段階 - をクリックして "バンドルリソースをコピー"を展開し、ファイルがその中にあることを確認します)

  3. 大文字と小文字が正確に一致することを確認してください(別名シミュレータは動作しますが、問題はありません)。大文字と小文字は正確に一致しているかどうかを確認してください。

  4. プロジェクトでメディアフレームワークが欠落している可能性があります。プロジェクトメニューでこのクリックを修正するには - >ターゲットをクリックします。 - > "Link Binary With Libraries"をクリックして展開します。次に、MediaPlayer.frameworkを選択してコードを作成します。

  5. 他のすべてが失敗した場合は、プロジェクトをクリーニングしてから、もう一度やり直してください。

すべてこれはチェックされ、修正されていますが、動作しません。私はこれがうまく動作していたし、私はアプリで表示されているビデオを変更しました。私はファイルを変更したので、動作を停止しました。

NSString *path = [[NSBundle mainBundle] pathForResource:@"multiplying" ofType:@"m4v"];

Q:なぜそれがnull?このファイルは、大文字と小文字が正しく一致しており、約10メガバイトです。 (ファイルが大きすぎますか?)シミュレータでうまく動作し、エラーのない画像、この行の上の行へのパスを取得できます。

+0

時には「クリーンビルド」相は完全にプロジェクトをきれいにしません。明らかにデバイス/シミュレータからアプリケーションを削除する以外に、より良いクリーンアップを行うには、〜/ライブラリ/ Developer/XCode/DerivedDataの領域内のプロジェクトへの参照をすべて消去してから、ビルドを再試行する必要があります。時にはこのディレクトリはxcodeに、すでにそこにあると思ってバンドルにファイルをコピーしたり置き換えたりしないで、本当に完全な再構築をしないように指示します。これはXCode 4.xで頻繁に発生します。あなたのリストに[5]の後にこのポイントを追加することができます。 – viggio24

+1

ポイントナンバー2のあなた自身の質問に私の解決策を見つけました:) Thanx a lot! – Nishant

答えて

4

あなたはシミュレータで動作していて、デバイスで動作していないとしますか? を使用すると、アプリケーションサンドボックスのフォルダのいずれかに最初の起動時にファイルをコピーして、このようにアクセスしてみてください可能性:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *pathForTheFile= [documentsDirectory stringByAppendingPathComponent:  @"multiplying.m4v"]; 
関連する問題