2009-08-13 14 views
10

Co chcę zrobić, wydaje się dość proste: Pobierz tablicę nazw plików w danym "katalogu" w mojej aplikacji. Ale im więcej gram z NSFileManager i NSBundle, tym bardziej się gubię ... Chcę tylko uzyskać nazwy plików z plików uporządkowanych w konkretnym katalogu w moim projekcie Xcode na iPhone ... Na przykład: katalog, o którym mowa, to o nazwie "Obrazy" (utworzone za pomocą "Dodaj> Nowa grupa" pod ikoną projektu w Xcode) i zawiera 10 obrazów .png. Wydaje się to proste, ale nigdzie się nie dostaję. Byłbym wdzięczny za pomoc w znalezieniu odpowiedzi.Jak uzyskać NSArray nazwy plików wszystkich plików w danym katalogu w mojej aplikacji?

Pytanie: Jak uzyskać NSArray nazwy plików wszystkich plików w danym katalogu w mojej aplikacji?

Odpowiedz

29

Jeśli chcesz folder być częścią pakietu aplikacji, trzeba utworzyć odwołanie folderu wewnątrz grupy Resources, zamiast grupy (będzie widoczny w Xcode jako niebieskim folderze, w przeciwieństwie do żółtego jeden).

Aby to zrobić, należy przeciągnąć folder z Findera i wybrać wskazanie folderu po wyświetleniu monitu.

Gdy trzeba, że ​​powinieneś być w stanie uzyskać zawartość folderu z czymś takim:

NSError *error = nil; 

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

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

W moim przypadku stringByAppendingString: @ "YourFolder" nie działa, ponieważ w ostatniej ścieżce brakuje "/". Sugeruję użycie zamiast stringByAppendingPathComponent: @ "YourFolder". Obejmuje to znak /. Cała linia powinna być: NSString * yourFolderPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: @ "YourFolder"]; –

+0

Masz rację, właśnie to zaktualizowałem. – pgb

9

Zaakceptowanych odpowiedź jest przestarzała od lat. Zamiast tego należy zastosować następujące.

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

Aktualizacja: @macserv zaktualizował zaakceptowaną odpowiedź po opublikowaniu tego.

+0

Edytowałem zaakceptowaną odpowiedź, aby to odzwierciedlić. – macserv

1

dzisiejszych czasach, to jak to zrobić:

  1. W programie Finder przeciągnij & upuść folder w nawigatorze Twojego projektu i następny popup pojawi się: enter image description here
  2. Jak widać w ten zrzut ekranu, musisz wybrać Utwórz odniesienia do folderów.
  3. Zrób to, co podpowie Ci rozwiązanie tego posta. Mam na myśli:

    NSError * błąd = zero;

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

    NSArray * yourFolderContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath: yourFolderPath błąd: & błąd];

Powiązane problemy