Как мне получить NSArray имен файлов всех файлов в данном каталоге в моем приложении?
-
13-09-2019 - |
Вопрос
То, что я хочу сделать, кажется достаточно простым:Получите массив имен файлов в заданном "каталоге" в моем приложении.Но чем больше я играю с NSFileManager и NSBundle, тем больше теряюсь...Я просто хочу получить имена файлов, организованных в определенном каталоге в моем проекте iPhone Xcode...Например:Каталог, о котором идет речь, называется "Изображения" (создан с помощью "Добавить > Новая группа" под значком проекта в Xcode) и содержит 10 изображений в формате png.Это кажется простым, но у меня ничего не получается.Я был бы признателен за некоторую помощь в поиске ответа.
Q: Как мне получить 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 * ошибка = ноль;
NSString *yourFolderPath = [[[NSBundle mainBundle] resourcePath] Компонент stringbyappendingpath:@"YourFolder"];
NSArray *yourFolderContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath: ошибка yourFolderPath:&ошибка];