Comment puis-je obtenir un NSArray de noms de fichiers de tous les fichiers dans un répertoire donné dans mon application?
-
13-09-2019 - |
Question
Ce que je veux faire semble assez simple: Obtenez un tableau de noms de fichiers dans un donné « répertoire » sur mon application. Mais plus je joue avec mon NSFileManager et NSBundle je me retrouve à obtenir plus perdu ... Je veux juste obtenir les noms des fichiers organisés dans un répertoire spécifique dans mon projet iPhone Xcode ... Par exemple: le répertoire en question est appelé « images » (créé en utilisant « Ajouter> Nouveau groupe » sous l'icône du projet dans Xcode) et contient 10 images .png. Il semble simple mais je reçois nulle part. Je vous remercie de l'aide pour trouver la réponse.
Q: Comment puis-je obtenir un NSArray de noms de fichiers de tous les fichiers dans un répertoire donné dans mon application
La solution
Si vous voulez que le dossier fasse partie du paquet App, vous devez créer une référence de dossier dans le groupe des ressources, au lieu d'un groupe (il apparaîtra dans Xcode comme un dossier bleu par opposition au jaune) .
Pour ce faire, vous faites glisser le dossier du Finder et sélectionnez la référence du dossier lorsque vous êtes invité.
Une fois que vous avez, vous devriez être en mesure d'obtenir le contenu du dossier avec quelque chose comme:
NSError *error = nil;
NSString *yourFolderPath = [[[NSBundle mainBundle] resourcePath]
stringByAppendingPathComponent:@"YourFolder"];
NSArray *yourFolderContents = [[NSFileManager defaultManager]
contentsOfDirectoryAtPath:yourFolderPath error:&error];
Autres conseils
La réponse acceptée a été dépréciée depuis des années. Ce qui suit doit être utilisé à la place.
- (NSArray *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError **)error
Mise à jour: @macserv mis à jour la réponse acceptée après que je posté.
De nos jours, voici comment vous le faites:
- Dans le Finder, un glisser-déposer votre dossier dans le navigateur de votre projet et la prochaine fenêtre contextuelle apparaîtra:
- Comme vous pouvez le voir dans cette capture d'écran, vous devez sélectionner Créer des références de dossier .
-
Faites ce que la solution pour ce poste est vous dit de faire. Je veux dire:
NSError * = erreur nulle;
NSString * yourFolderPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: @ "YourFolder"];
NSArray * yourFolderContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath: erreur yourFolderPath: & error];