2010-12-27 8 views
10

これは私が世界で何が起こっているのか理解できないので私を狂わせてしまっている。私はあなたのメインバンドルからすべての時間、xmlファイル、htmlファイルなどのファイルをロードします。しかし、今はjavascriptファイルの内容を取得しようとしていますが、それを見つけることはできません。私が使用しています:メインバンドルに.jsファイルがありませんか?

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

をしても、[[NSBundle mainBundle] pathForResource: "グローバル" ofType @: "JS" @]をチェックした文字列がnullを返します。

My globaly.jsファイルはResourcesフォルダにあります。私の他のファイルは、上記の方法で完全に正常に動作する場所です。

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

+0

スクリプトは "activity.js" である場合は、なぜあなたは "global.js" を探していますか? – Chuck

+0

ファイルglobal.jsまたはactivity.jsの名前ですか? –

+0

global.jsまたはactivity.jsという名前のファイルをロードしようとしていますか? – tidwall

答えて

5

をglobal.js。つまり、アプリケーションバンドルに追加していないということです。あなたのファイルの名前を* .txtに変更するだけでOKです。

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

+1

あなたは正しいと思われます。明らかに.jsファイルが嫌いです。それを.txtファイルにするのはうまくいきました。どうして私がそれを考えなかったのか分かりません。 –

+6

Xcodeがいくつかのファイルタイプを「好きではない」問題ではなく、「txt」拡張子を持つように名前を変更する必要はありません。 –

+2

バンドルのコピーにjsを移行すると、リソースが私のために働いていました。ありがとう – z22

0

xCodeは、ファイルがプロジェクトに存在していると認識せず、正しくすべてをバンドルしません。 .jsファイルを削除してもう一度追加してみてください。

も、あなたが、activity.jsを2人の異なるファイル名を言及しているようだし、私の知る限りは、Xcodeのは、* .jsの拡張子を持つファイルを好きではない覚えて

+0

ええ、それはこの投稿の入力ミスです。 –

14

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

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

+0

コピーバンドルにjsを移動私のために働いたリソース。コピーがうまくいった理由を説明してください。 – z22

2

Xcodeは.jsファイルが好きではありません。それ以外の場合は、webviewのjavascriptexecutionに.jsファイルを使用していないと考えられます。

ターゲットのコピーバンドルリソースビルドフェーズで.jsファイルを追加するだけで済みます。 .jsファイルをコピーバンドルリソースビルドフェーズにドラッグするだけです。したがって、Xcodeは、今度はbulidフェーズバンドルに入っているので、このファイルを考慮します。 上記の手順を実行しなければ、コードを作成する際に警告が表示されると思います。私は警告を覚えていませんが、Xcodeが.jsファイルを認識できないと言っただけです。ファイルはビルドフェーズに追加されると

、あなたが使用することができます たNSData * jsData = [NSDataのdataWithContentsOfFile:[[NSBundle mainBundle] pathForResource: "グローバル" ofType @:@ "JS"]];

1

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

  1. は、ビルド設定で「ソースをコンパイルする」セクションにJSファイルを探し、そこからそれを削除します。

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

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

上記2つのステップは、私の問題を解決しました。..

関連する問題