あなたは質問にあなたのコードを与えなかったので、それをデバッグするのは非常に難しいです…しかしあなた自身の答えから、私は問題を知っているとかなり確信しています。パス文字列とURL文字列を交換可能として扱っていますが、そうではありません。
あなたはこれを提案します:
[[inspectorView mainFrame]
loadRequest:[NSURLRequest
requestWithURL:[NSURL
URLWithString:
[[NSBundle mainBundle]
pathForResource:@"inspectorView"
ofType:@"html"
inDirectory:@"HTML/inspectorView"]]]];
(読みやすくするために改行をいくつか追加しました。)
+ [NSURL URLWithString:]を呼び出すには、パスを表す文字列ではなく、URLを表す文字列が必要です。ただし、-[NSBundle pathForResource:ofType:inDirectory:]はパスを返します。必要に応じて、パス+ [NSURL fileURLWithPath:isDirectory:]からURLを作成する関数があります。
ただし、10.5以前をサポートする必要がない限り、-[NSBundle pathForResource:]の代わりに-[NSBundle URLForResource:withExtension:subdirectory:]を使用すると、最初にURLを取得するだけで、前後に変換する必要がなくなります。 ofType:inDirectory:]。
それで:
[[inspectorView mainFrame]
loadRequest:[NSURLRequest
requestWithURL:[[NSBundle mainBundle]
URLForResource:@"inspectorView"
withExtension:@"html"
subdirectory:@"HTML/inspectorView"]]];
コードが機能する場合と機能しない場合があるのはなぜか疑問に思われる場合は、「/ Applications / MyApp.app / Contents /」を検討してください(簡潔にするために「Resources / HTML / inspectorView/inspectorView.html」は省略しています。 、ここでは関係ないため)は、URLとして読み取る場合を意味します。これは相対URLです。それを解釈するには、現在のベースを取得し、パス部分をノックオフして、文字列に置き換えます。+ [NSURL URLWithString:]は、たまたま「file:// localhost」をベースとして使用します。つまり、次のようになります。
file://localhost/Applications/MyApp.app/Contents/
これはたまたま有効なURLであり、実際には、必要なファイルの有効なURLです。それが機能するように文書化されていませんが、それは起こります。この場合。しかし、そこにスペースを入れるとどうなりますか?次に、次のようになります。
file://localhost/Applications/MyApp X.app/Contents/
これは有効なURLではありません。あなたが欲しいのはこれです:
file://localhost/Applications/MyApp%20X.app/Contents/
そしてもちろん、+ [URLWithString:]の代わりに+ [fileURLWithPath:isDirectory:]を呼び出すと、まさにそれが得られます。
(ここで少しごまかしています。実際、NSURLは内部で相対URLとベースを別々に追跡し、URLにアクセスしようとするとそれらを構成します。ただし、今のところ無視できます。)