Создать массив из всех изображений в приложении? - PullRequest
0 голосов
/ 10 декабря 2011

Можно ли создать NSArray из всех .png, .jpg и .jpeg, которые есть в моем приложении? Я знаю, что это можно сделать для определенного типа, например, только .pngs, но я не уверен, как это сделать со всеми изображениями в моем приложении.

Я бы предпочел не иметь много условий, так как я мог бы сделать это легко?

Спасибо!

Edit1:

// Do any additional setup after loading the view, typically from a nib.
NSString * pathToImages = [NSString stringWithFormat: @"%@/images", [[NSBundle mainBundle] resourcePath]];
NSFileManager *localFileManager= [[[NSFileManager alloc] init] autorelease];
NSDirectoryEnumerator *dirEnum = [localFileManager enumeratorAtPath:pathToImages];
NSString *file;
NSLog(@"level1");
while (file = [dirEnum nextObject]) {
    NSLog(@"level2");
    if(file)
    {
        NSLog(@"level3");
        [imagesArray addObject:file];
    }
}

1 Ответ

1 голос
/ 10 декабря 2011

Зависит от того, как вы хотите хранить изображения в вашем массиве.Вам нужны ссылки на файлы или реальные объекты UIImage?

В любом случае ... если вы сохранили все свои изображения в папке "images" в каталоге ресурсов вашего приложения, почему бы не попробовать что-то вроде:

NSString * pathToImages = [NSString stringWithFormat: @"%@/images", [[NSBundle mainBundle] resourcePath]];
NSFileManager *localFileManager= [[NSFileManager alloc] init];
NSDirectoryEnumerator *dirEnum = [localFileManager enumeratorAtPath:docsDir];
NSMutableArray * arrayOfImages = [[NSMutableArray alloc] initWithCapacity: 1];
NSString *file;
while (file = [dirEnum nextObject]) {
    // let's assume that all objects in here are valid images
    UIImage * newImage = [UIImage imageWithContentsOfFile: file];
    if(newImage)
    {
        [arrayOfImages addObject: newImage];
    }
}

Между прочим ... если вы загружаете много изображений (особенно с высоким разрешением), вы, скорее всего, вызовете didReceiveMemoryWarning вызовов в ваших контроллерах представления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...