10

世界で何が起こっているのか理解できないので、これは私を夢中にさせています。私はいつもあなたのメインバンドルからファイル、xmlファイル、htmlファイルなどをロードしています。私は使っている:

NSData *jsData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"global" ofType:@"js"]];
    if (jsData) {
        NSLog(@"%@", jsData);
    } else {
        NSLog(@"Can't find file");
        return;
    }

[[NSBundle mainBundle] pathForResource:@"global" ofType:@"js"] 文字列をチェックしても null が返されます。

私の globaly.js ファイルは Resources フォルダーにあります。これは、他のファイルが上記の方法を使用して完全に正常に機能する正確な場所です。

js ファイルが見つからないのはなぜですか?

4

5 に答える 5

14

デフォルトでは、Xcodeは拡張子が「js」のファイルをソースファイルとして扱い、バンドルリソースのコピービルドフェーズではなく、ソースのコンパイルビルドフェーズに追加する場合があります。

「js」ファイルを「バンドルリソースのコピー」ビルドフェーズに移動するだけで、アプリケーションのバンドルにコピーされます。プロジェクト階層のResourcesという名前のグループに属しているかどうかは重要ではありません。これは単なる組織的なツールであり、Xcode内では意味がありません。実際に製品を組み立てる作業を行うのは、ターゲットの下でのビルドフェーズです。

于 2010-12-28T02:46:56.600 に答える
5

私が覚えている限り、Xcodeは*.js拡張子のファイルが好きではありません。つまり、アプリケーションバンドルに追加されなかったということです。ファイルの名前を*.txtに変更するだけで、すべて問題ありません。

そして正しい答えは次のとおりです。jsファイルをコンパイルソースターゲットビルドフェーズからコピーバンドルリソースに移動する必要があります。Xcodeはjsファイルをソースファイルと見なしているため、リソースとして追加する代わりにコンパイルする必要があります。

于 2010-12-27T20:57:29.917 に答える
2

Xcode が .js ファイルを好まないというわけではありません。それ以外の場合は、webview での javascriptexecution に .js ファイルを使用しなかったと見なされます。

ターゲットの下の Copy Bundle リソース ビルド フェーズで .js ファイルを追加する必要があるだけです。.js ファイルをコピー バンドル リソースのビルド フェーズにドラッグするだけです。したがって、Xcode はこのファイルを検討します。これは、現在ビルド フェーズ バンドルに含まれているためです。上記の手順を実行しないと、コードのビルド時に警告が表示されると思います。警告を正確に覚えていませんが、Xcode は .js ファイルを認識できないとだけ言っていました。

ファイルがビルド フェーズに追加されたら、NSData *jsData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"global" ofType:@"js"]]; を使用できます。

于 2010-12-28T03:58:36.793 に答える
1

私は同じ問題に直面しました。

この問題を解決するために、次の手順を実行しました。

  1. ビルド設定の「コンパイル ソース」セクションで js ファイルを見つけ、そこから削除します。

  2. 「バンドル リソースのコピー」セクションを見つけて、そこに js ファイルを追加します。

上記の2つの手順で問題が解決しました..

于 2012-11-18T08:50:52.497 に答える
0

xCodeは、ファイルがプロジェクトにあることを認識せず、すべてを正しくバンドルしない場合があります。.jsファイルを削除して再度追加してみてください。

また、activity.jsとglobal.jsの2つの異なるファイル名について言及しているようです。

于 2010-12-27T20:50:00.160 に答える