загрузка изображений из каталога документов в массив

У меня есть несколько изображений в формате jpg, которые я сохраняю в каталоге документов со снимков камеры. Я хочу найти все изображения jpg в каталоге документов и загрузить их в массив, чтобы они могли отображаться в режиме переполнения.

Вот мой код для поиска и сортировки изображений jpg в каталоге документов.

   NSString *extension = @"jpg";
        NSFileManager *fileManager = [NSFileManager defaultManager];



        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0];

        NSArray *contents = [fileManager contentsOfDirectoryAtPath:documentsDirectory error:nil];  
        NSMutableArray *jpegFiles = [NSMutableArray arrayWithCapacity: [contents count]];

       NSString *filename;
        for (filename in contents)

        {
            if ([[filename pathExtension] isEqualToString:extension]) 
                     {
             [jpegFiles addObject:[UIImage imageNamed:[documentsDirectory stringByAppendingPathComponent:filename]]];


            }
        }

    // Add the coverflow view
    coverflow = [[TKCoverflowView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
    coverflow.coverflowDelegate = self;
    coverflow.dataSource = self;
    [self.view addSubview:coverflow];
    [coverflow setNumberOfCovers:6];

- (void) coverflowView:(TKCoverflowView*)coverflowView coverAtIndexWasBroughtToFront:(int)index{
        NSLog(@"Front %d",index);
}

- (TKCoverflowCoverView*) coverflowView:(TKCoverflowView*)coverflowView coverAtIndex:(int)index{


    TKCoverflowCoverView *cover = [coverflowView dequeueReusableCoverView];

    if(cover == nil){
        // Change the covers size here
        cover = [[TKCoverflowCoverView alloc] initWithFrame:CGRectMake(0, 0, 280, 210)]; // 224
        cover.baseline = 200;

    }
    cover.image = [covers objectAtIndex:index % [covers count]];

    return cover;

}

Я пробовал все, что мог придумать, и ничего не работает.

Было предложено загружать каждое изображение, получая путь к изображению из массива путей, и использовать метод imageWithContentsOfFile для загрузки изображения.

Я искал это и искал, как это сделать, но безуспешно. Может ли кто-нибудь показать мне, как это сделать.


person user1114881    schedule 15.03.2012    source источник


Ответы (1)


Вы должны сделать это, как показано ниже,

if ([[filename pathExtension] isEqualToString:extension]) 
{
     [jpegFiles addObject:[UIImage imageWithContentsOfFile:[documentsDirectory stringByAppendingPathComponent:filename]]];
}
person cocoakomali    schedule 17.03.2012
comment
Код в порядке через {if([[filename pathExtension]isEqualToString:extension]) - person user1114881; 18.03.2012
comment
извините, здесь потребовалось много времени для другого редактирования Код в порядке через {if([[filename pathExtension]isEqualToString:extension]) {[jpegFiles addObject: filename];}} Он создает массив с именами файлов для всех файлов изображений с расширение .jpg. Я пытался использовать ваш код, но это не сработало. Что я хочу сделать, так это просто загрузить файлы из массива jpegFiles в массив обложек и использовать их, но на самом деле не знаю, как пробовали arrayWithArray, arrayWithArray Copy просто продолжает падать. Я очень ценю вашу помощь и вклад. - person user1114881; 18.03.2012
comment
Код, который я дал, дает вам объекты UIImage всех файлов jpeg из вашего documentDirectory в массиве jpegFiles. - person cocoakomali; 18.03.2012
comment
Поэтому я пересмотрел свой код, чтобы отразить то, что вы предложили, вместе с кодом для остальной части страницы, которая имеет отношение. Когда я запускаю программу, она вылетает, говоря, что объект '-[NSArrayM insertObject:atIndex:] не может быть равен нулю*, возможно, я делаю что-то не так. можешь указать на мою ошибку? - person user1114881; 18.03.2012
comment
Упс. Небольшая поправка! Вместо [UIImage imageNamed:путь]; Используйте [UIImage imageWithContentsOfFile: путь]; - person cocoakomali; 19.03.2012
comment
Так что просто чтобы убедиться, что я понимаю, я должен ввести - person user1114881; 20.03.2012
comment
СУПЕР ты молодец. Еще один вопрос, если бы я мог, а если нет, я отправлю новый вопрос. Если вы посмотрите на середину моего исходного поста, там есть строка '[coverflow setNumberOfCovers:6];' Как я могу сделать число 6 переменной, отражающей количество изображений в jpegFiles? - person user1114881; 20.03.2012
comment
[обложка setNumberOfCovers:[счетчик jpegFiles]]; - person cocoakomali; 20.03.2012
comment
Спасибо, я думал, что это то, что я должен сделать, поэтому сделал это, прежде чем я прочитал ваш пост. Наверное, я должен чему-то учиться. Спасибо за ответ. - person user1114881; 20.03.2012