2009-08-13 8 views
10

Quello che voglio fare sembra abbastanza semplice: ottenere una serie di nomi di file in una determinata "directory" sulla mia app. Ma più mi diverto con NSFileManager e NSBundle mi trovo sempre più perso ... Voglio solo ottenere i nomi dei file dei file organizzati in una directory specifica nel mio progetto iPhone Xcode ... Ad esempio: La directory in questione è chiamato "Immagini" (creato usando "Aggiungi> Nuovo gruppo" sotto l'icona del progetto in Xcode) e contiene 10 immagini .png. Sembra semplice ma non sto andando da nessuna parte. Gradirei un po 'di aiuto nel trovare la risposta.Come posso ottenere un NSArray di nomi di file di tutti i file in una determinata directory nella mia app?

Q: Come posso ottenere un NSArray di nomi di file di tutti i file in una determinata directory nella mia app?

risposta

29

Se si desidera la cartella da parte del bundle App, è necessario creare un riferimento cartella all'interno del gruppo di risorse, invece di un gruppo (che apparirà in Xcode come una cartella blu in contrasto con il colore giallo uno).

Per fare ciò, trascinare la cartella dal Finder e selezionare il riferimento alla cartella quando richiesto.

Una volta che avete, si dovrebbe essere in grado di ottenere il contenuto della cartella con qualcosa del tipo:

NSError *error = nil; 

NSString *yourFolderPath = [[[NSBundle mainBundle] resourcePath] 
          stringByAppendingPathComponent:@"YourFolder"]; 

NSArray *yourFolderContents = [[NSFileManager defaultManager] 
           contentsOfDirectoryAtPath:yourFolderPath error:&error]; 
+0

Nel mio caso, stringByAppendingString: @ "YourFolder" non funziona poiché il percorso finale manca un "/". Suggerisco di utilizzare invece stringByAppendingPathComponent: @ "YourFolder". Questo includerà il carattere /. L'intera riga deve essere: NSString * yourFolderPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: @ "YourFolder"]; –

+0

Hai ragione, l'ho appena aggiornato. – pgb

9

La risposta accettata è stato deprecato da anni. Dovrebbe essere usato il seguente.

- (NSArray *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError **)error 

Aggiornamento: @macserv ha aggiornato la risposta accettata dopo che l'ho postata.

+0

Ho modificato la risposta accettata per riflettere questo. – macserv

1

Al giorno d'oggi, questo è come lo fate:

  1. Dal Finder, Drag & Invia il tuo cartella nella navigazione del progetto e la prossima popup rispetto: enter image description here
  2. Come si può vedere in quello screenshot, è necessario selezionare Creare riferimenti cartella.
  3. Fai quello che la soluzione per questo post ti dice di fare. Intendo:

    NSError * error = nil;

    NSString * yourFolderPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: @ "YourFolder"];

    NSArray * yourFolderContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath: yourFolderPath errore: Errore di &];