Как получить NSArray файлов всех файлов в данном каталоге в моем приложении?

То, что я хочу сделать, кажется достаточно простым: получить массив имен файлов в данном "каталоге" в моем приложении. Но чем больше я играю с NSFileManager и NSBundle, тем больше я теряюсь... Я просто хочу получить имена файлов, организованных в определенном каталоге в моем iPhone Xcode-проекте... Например: в каталоге, о котором идет речь, (созданные с помощью "Добавить > Новая группа" под иконкой проекта в Xcode) и содержит 10 изображений .png. Кажется простым, но я никуда не ухожу. Я был бы признателен за помощь в поиске ответа.

Q: Как получить NSArray имен файлов всех файлов в данном каталоге в моем приложении?

Ответ 1

Если вы хотите, чтобы папка была частью пакета приложений, вам нужно создать ссылку на папку внутри группы "Ресурсы" вместо группы (она будет отображаться в Xcode как синяя папка, а не желтая).

Чтобы сделать это, перетащите папку из Finder и выберите приглашение папки при появлении запроса.

После этого вы сможете получить содержимое папки с чем-то вроде:

NSError *error = nil;

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

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

Ответ 2

Принятый ответ устарел уже много лет. Вместо этого следует использовать следующее.

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

Обновление: @macserv обновил принятый ответ после того, как я разместил его.

Ответ 3

В наше время, так вы это делаете:

  • В Finder перетащите свою папку в навигаторе проектов, и появится следующее всплывающее окно: введите описание изображения здесь
  • Как вы можете видеть на этом снимке экрана, вам нужно выбрать Создать ссылки на папку.
  • Сделайте то, что говорит вам решение для этой публикации. Я имею в виду:

    NSError * error = nil;

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

    NSArray * yourFolderContents = [[NSFileManager defaultManager]                               contentOfDirectoryAtPath: ошибка yourFolderPath: & ошибка];