4

Mac コンソール アプリケーションの新機能。やったことがないのですが、Objective-Cでコーディングしたいので、Xcodeでアプリケーションを作成する際に「Foundation」を選択しました。

int main(int argc, const char * argv[])
{

    @autoreleasepool {

        NSString *contentPath = [[NSBundle mainBundle] pathForResource:@"Input" ofType:@"txt"];
        NSLog(@"%@",contentPath);

    }
    return 0;
}

パスがヌルです。

ここで回答に従いました: https://stackoverflow.com/a/7835776/555690関連する質問からですが、修正されませんでした。

次に、Getting a nil path from NSBundle を調べましたが、問題はディレクトリでした(ディレクトリがありません-ファイルをプロジェクトのルートに配置しただけです)。

このファイルのパスに null が返されるのはなぜでしょうか?

4

2 に答える 2

3

アプリケーションにはバンドル (特別に構造化されたディレクトリ) がないため、バンドル リソース ルックアップでは何も検索されません。

于 2013-05-10T02:14:31.083 に答える
1

通常、リソースがバンドルされた .app がある場合、Input.txt という名前のファイルを Supporting Files フォルダーまたは Resources フォルダーに追加する必要があるため、null になります。あなたはコンソール アプリケーションを作成しているので、なぜそれを行うのかわかりません。

Input.txt をサポート ファイルに追加する前に:

2013-05-09 19:23:40.228 tester[2847:303] (null)

サポート ファイルに Input.txt を追加した後:

2013-05-09 19:21:00.306 tester[2807:303] /Developer/Xcode/DerivedData/tester-gjrofdlcblvmplbjdvvfhieiymzh/Build/Products/Debug/tester.app/Contents/Resources/Input.txt
于 2013-05-10T02:24:12.807 に答える