アプリ内の特定のディレクトリにあるすべてのファイルのファイル名の NSArray を取得するにはどうすればよいですか?
-
13-09-2019 - |
質問
私がやりたいことは非常に単純に思えます:アプリ上の指定された「ディレクトリ」内のファイル名の配列を取得します。しかし、NSFileManager や NSBundle をいじればいじるほど、ますますわからなくなってきます...iPhone Xcode プロジェクトの特定のディレクトリに整理されているファイルのファイル名を取得したいだけです...例:問題のディレクトリは「Images」(Xcode のプロジェクト アイコンの下にある「追加 > 新しいグループ」を使用して作成)と呼ばれ、10 個の .png 画像が含まれています。簡単そうに見えますが、どこにも到達できません。答えを見つけるのに役立つと幸いです。
質問: アプリ内の特定のディレクトリにあるすべてのファイルのファイル名の NSArray を取得するにはどうすればよいですか?
解決
フォルダーをアプリ バンドルの一部にしたい場合は、グループではなくリソース グループ内にフォルダー参照を作成する必要があります (Xcode では黄色のフォルダーではなく青いフォルダーとして表示されます)。
これを行うには、Finder からフォルダーをドラッグし、プロンプトが表示されたらフォルダー参照を選択します。
それを取得したら、次のような方法でフォルダーの内容を取得できるようになります。
NSError *error = nil;
NSString *yourFolderPath = [[[NSBundle mainBundle] resourcePath]
stringByAppendingPathComponent:@"YourFolder"];
NSArray *yourFolderContents = [[NSFileManager defaultManager]
contentsOfDirectoryAtPath:yourFolderPath error:&error];
他のヒント
受け入れられた回答は何年も前から廃止されています。代わりに以下を使用する必要があります。
- (NSArray *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError **)error
アップデート:これを投稿した後、@macserv が受け入れられた回答を更新しました。
最近では、次のような方法でそれを行うことができます。
- Finder からプロジェクトのナビゲーターにフォルダーをドラッグ アンド ドロップすると、次のポップアップが表示されます。
- そのスクリーンショットでわかるように、選択する必要があります フォルダー参照の作成.
この投稿の解決策に記載されているとおりに実行してください。つまり:
NSError *エラー = nil;
nsstring *yourfolderpath = [[[nsbundle mainbundle] resourcepath] stringbyappendingpathcomponent:@"yourfolder"];
nsArray *YourFolderContents = [[nsfilemanager defaultmanager] contentsofdirectoryatpath:yourfolderpathエラー:&エラー];