2017-10-29 23 views
0

特定のディレクトリから.plistファイルを読み取ろうとしますが、pathForResourceは常にnilを返します。つまり、探しているファイルが見つかりません。これは私がパスを作成するために使用しているものです。ファイルはProjectフォルダに保存されます。Objective-C - pathForResourceは常にnilを返します

NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"test" ofType: @"plist"]; 

私は間違っていますか?そして、プロジェクトの一部ではないディレクトリからplistファイルにアクセスするにはどうすればいいですか?これは、macOSコマンドラインツール用です。

+0

'-pathForResource:ofType:'特定のバンドルに含まれるファイルをロードするためのものです。 '[NSBundle mainBundle]'の場合、それはあなたのアプリの一部として出荷されることを意味します。ファイルがXcodeのサイドバーの特定のターゲットの一部として選択されていることを確認する必要があります(例:https://i.stack.imgur.com/v3Z0A.jpg)。プロジェクトの外にファイルをロードする場合は、ファイルの場所によって異なります。あなたは特定の場所にファイルを期待していますか? –

+0

ありがとうございます。はい、特定の場所にあるファイルが必要です。それで、すべてのファイルをターゲットの一部として選択する必要がありますか(約200ファイルです)?私は、私はiOSアプリケーションを作成しようとしないで、コマンドラインツールを言及する必要があります。 – Lukas

+3

macOSコマンドラインプログラムにはリソースバンドルがありません。 – rmaddy

答えて

1

コメントが指摘したように、.app/バンドルでアプリが構成されていない限り、+[NSBundle mainBundle]は使用できません。コマンドラインアプリケーション(1つのバイナリを意味する)を作成する場合は、パスを読み込むために、ファイルの場所を別の方法で調べる必要があります。

「ファイルがプロジェクトフォルダに格納されています」と言うとき、私はあなたが何を意味するのかよく分かりません。確かに、.plistファイルが/ usr/binにぶら下がっているとか、バイナリのデプロイメントが終わったところにあっても期待しないでしょう!あなたが読んでいるplistは、アプリケーションと一緒に出荷する必要がある場合は、バンドルを使用する必要があります。代わりに何らかの形でアプリを実行している間にplistを生成する場合は(Webからダウンロードするか、徐々に物事を保存することによって構築する)、アプリのサブフォルダをApplication Support directoryに作成し、.plist 。

あなたがの.plistパスを持っていたら、あなたはそれを読むために+dictionaryWithContentsOfFile:を使用することができます

関連する問題