2

ファイルを取得する前に、アプリにロードされた外部バンドルにファイルが存在するかどうかを確認するにはどうすればよいですか?

4

2 に答える 2

13

ファイルがバンドルに存在するかどうかを確認するには、NSBundleクラスを使用します。

NSString *path = [[NSBundle mainBundle] 
                            pathForResource:@"somefileinbundle" 
                            ofType:@"png"];
if (!path)
   NSLog(@"Unable to find file in bundle");

とはいえ、通常、ファイルをロードする前にファイルが存在するかどうかを確認することはお勧めできません。AppleのドキュメントによるとNSFileManager fileExistsAtPath:

ファイル システムまたはファイル システム上の特定のファイルの現在の状態に基づいて動作を推測しようとすることはお勧めできません。これを行うと、ファイル システムの競合状態の場合に奇妙な動作が発生する可能性があります。操作が成功するかどうかを事前に判断しようとするよりも、操作 (ファイルのロードやディレクトリの作成など) を試み、エラーをチェックし、エラーを適切に処理する方がはるかに優れています。ファイル システムの競合状態の詳細については、セキュア コーディング ガイドの「競合状態と安全でないファイル操作の回避」を参照してください。

于 2011-09-20T14:52:54.047 に答える
4

ロードするかどうかを決定できるように、そこにあるかどうかだけを知りたい場合は、ロードして、返されたオブジェクトが nil かどうかを確認します。存在する場合は、バンドルに存在しないことがわかります。

于 2011-04-05T00:20:01.987 に答える