4

通常、アプリで特定のリソースをロードしようとすると[[NSBundle mainBundle] pathForResource:@"iphone" ofType:@"splang"]正常に動作しますが、たまに nil が返されます。問題の iphone.splang ファイルは ~275 KB のテキスト ファイルであり、アプリに確実にバンドルされています (通常はロード可能であることからも明らかです)。

mainBundle メソッドではなく、nil を返すのは pathForResource:ofType: であることを確認しました。

4

1 に答える 1

1

それは国際化の問題かもしれません。ドキュメントによると、pathForResourceは、ファイルが見つからない場合にのみnilを返します。しかし、それはまた言います:

このメソッドは、最初に、指定されたバンドルのローカライズされていないリソースディレクトリで一致するリソースファイルを探します。[...]一致するリソースファイルが見つからない場合は、使用可能な言語固有の「.lproj」ディレクトリの最上位を検索します。(言語固有のディレクトリの検索順序は、ユーザーの設定に対応しています。)これらの場所のいずれかで他のサブディレクトリを介して繰り返されることはありません。

おそらく、異なる言語の異なるマシンまたはシミュレーターでコードを試しているのかもしれません。

また、[NSBundle mainbundle]nilを返すことができるため、その呼び出しを実行するとnilも返されます。

[...]必ず戻り値をチェックして、有効なバンドルがあることを確認してください。

于 2012-11-01T11:40:30.977 に答える