получить имена файлов в NSArray - PullRequest
2 голосов
/ 07 августа 2009

У меня есть изображения в папке Images, и я хотел бы инициализировать массив со строками имени файла ...

например:

one.png, two.png, three.png

Я хотел бы инициализировать мой массив как ["one", "two", "three"]

Ответы [ 2 ]

8 голосов
/ 07 августа 2009

Попробуйте это:

//Retrieve an array of paths in the given directory
NSArray *imagePaths = [[NSFileManager defaultManager] contentsOfDirectoryAtPath: @"/Images/" error: NULL];

if(imagePaths==nil || [imagePaths count]==0) {
    //Path either does not exist or does not contain any files
    return;
}

NSEnumerator *enumerator = [imagePaths objectEnumerator];
id imagePath;
NSString *newImageName;

NSMutableArray *imageNames = [[NSMutableArray alloc] init];

while (imagePath = [enumerator nextObject]) {
    //Remove the file extension
    newImageName = [imagePath stringByDeletingPathExtension];
    [imageNames addObject:newImageName];
}

Первая часть кода извлекает имена файлов в указанном каталоге и добавляет их в массив imagePaths.

Вторая часть кода затем перебирает пути к изображениям в массиве и удаляет расширение с конца (используя метод stringByDeletingPathExtension), добавляя их в массив imageNames, который будет содержать все файлы в указанный каталог без каких-либо расширений файлов.

Как сделал Graham Lee в своем коде, вы можете предоставить указатель на объект NSError для получения информации о проблеме в случае возникновения ошибки.

4 голосов
/ 07 августа 2009
NSError *error = nil;
NSArray *imageFiles = [[NSFileManager defaultManager] contentsOfDirectoryAtPath: @"/path/to/Images/" error: &error];
if (imageFiles == nil) //handle the error
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...