web-dev-qa-db-ja.com

[NSBundle mainBundle] pathForResource:ofType:inDirectory:を使用してファイルにアクセスする

ファイルがありますpaylines.txtは、Xcodeの私のiOSプロジェクトのTextFilesフォルダー内にあるResourcesという名前のフォルダー内に追加されました。

これは、ファイルにアクセスするために使用するコードです。

NSString* filePath = [[NSBundle mainBundle] pathForResource:@"paylines" ofType:@"txt" inDirectory:@"TextFiles"];
NSLog(@"\n\nthe string %@",filePath);

コードは次を印刷します。

2011-06-07 14:47:16.251 slots2[708:207] 

the string  (null)
42
Yadnesh

まあ私は私がコミットしていた間違いを見つけました私はより多くのために実際のディレクトリを追加する代わりにプロジェクトにグループを追加していました instructions

10
Yadnesh

私も同じ問題を抱えていました。私が見つけた解決策は(xcode 4.xで)です:

移動:ターゲット-> "ビルドフェーズ"-> "バンドルリソースのコピー"次に、その特定のファイルをここに追加します。そのファイルが既に追加されている場合は、削除して再度追加します。

プロジェクトをクリーンアップして実行します。動作します。 :)

163
Neelam Verma

これを試してください、それは私のために働いています。

NSString *str = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"paylines.txt"];  

シミュレーター用

NSURL *rtfUrl = [[NSBundle mainBundle] URLForResource:@"paylines" withExtension:@".txt"];
10
Rajneesh071

ファイルをドラッグすると、デフォルトで「ターゲットに追加」ボックスがチェックされていないようです。チェックを外したままにしておくと、問題が説明されます。ファイルを削除してからドラッグして戻しますが、「ターゲットに追加」にチェックを入れて修正します。 enter image description here

10
dawid

必要なことは、以下に示すチェックボックスがオンになっていることを確認することだけです。

enter image description here

3
RawMean

XCTest内でラップトップを破壊しようとしていますか?これはあなたのためのスレッドです: なぜユニットテスト内のコードがバンドルリソースを見つけられないのですか?

3
evanflash

Mac OSXの場合、

[ターゲット]-> [ビルドフェーズ]に移動し、[+]をクリックして新しいファイルをコピーします。ビルドフェーズ製品ディレクトリを選択し、そこにファイルをドロップします。

プロジェクトをクリーンにして実行します。

1
megha

@Neelam Vermaの回答または@Neelam Vermaの回答と同じ最終結果を持つ@dawidの回答をフォローした後、@ dawidの回答はXcodeプロジェクトへのファイルのドラッグアンドドロップで始まり、@ Neelam Vermaの回答はファイルがすでにXcodeプロジェクトの一部であるにもかかわらず、NSBundle.mainBundle().pathForResource("file-title", ofType:"type")を取得してビデオファイルを見つけることができませんでした。

Xcodeプロジェクトにネストされたグループにファイルがあるので、これが原因であると考えたので、ビデオファイルをXcodeプロジェクトのルートに移動しました。

 guard let path = NSBundle.mainBundle().pathForResource("testVid1", ofType:"mp4") else {
        print("Invalid video path")
        return
    }

元々、これは私のファイルの名前でした:testVid1.MP4、ビデオファイルの名前をtestVid1.mp4は私の問題を修正したので、少なくともofType文字列引数は大文字と小文字が区別されます。

1
Brian Ogden

[ターゲット]-> [ビルドフェーズ]に移動し、ターゲットを選択し、[ビルドフェーズ]タブを選択して、[ビルドフェーズの追加]をクリックし、[コピーファイルの追加]を選択します。宛先を「製品ディレクトリ」に変更します。ファイルを「ファイルの追加」セクションにドラッグします。

1
Hordaric

プロジェクト/特定のフォルダーを選択->右クリック->プロジェクトにファイルを追加->追加するファイルを選択します。

これは私のために働いた。

0
YSR fan