2011-12-29 6 views
1

После некоторого исследования я немного смущен. Я могу захватить одно изображение из URL, если я знаю точный каталог, например,Извлечение массива изображений из url

UIImage *image = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.myUrl.com/pic/workaholics.png"]]]; 
UIImageView *view1 = [[UIImageView alloc] initWithImage:image]; 
[self.view addSubview:view1]; 

Это грубой работает отлично, но что, если вы не знаете точный путь. В Linux вы всегда можете сделать какой-то рекурсивный поиск, но с iOS я не могу понять это. Например, в каталоге «pic», который я указал в последнем случае, что, если бы были другие каталоги, называемые pic1, pic2, pic3 и т. Д., И каждый каталог имел произвольное количество png. То, что я с трудом обматываю, - это то, как я могу рекурсивно искать каталог «pic», чтобы извлечь все содержимое каталогов, которые соответствуют .png. Я бы грубо, а затем сохранил это NSData и преобразовал в строку, а затем сохранил содержимое в массиве. В этот момент я очень смущен. Любая помощь будет принята с благодарностью.

ответ

0

UIImage требуется явная вещь (URL-адрес или путь к файлу) для получения своих данных.

Одним из возможных решений является реализация поиска ваших .png-файлов с помощью метода NSFileManager enumeratorAtPath:. Справочное руководство, к которому я привязался, даже имеет фрагмент кода, который вы можете использовать для создания UIImages (просто переключите @"doc" на @png и вместо того, чтобы делать scanDocument, сделайте свою UIImage * image = ... вещь).

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

+0

Не было бы работать только с URL-адресами типа 'file:'? Я считаю, что в вопросе упоминается «http:» как протокол. – Monolo

0
NSURL *url = [NSURL 
URLWithString:@”www.ArticleDean.com\images\sample.jpg”]; 
NSData *data = [NSData dataWithContentsOfURL:url]; 
UIImage *image = [[UIImage alloc] intiWithData:data]; 

попробовать это один

1

Ваша трудность будет получить список каталогов с веб-сервера - так как вы извлечения изображений через Интернет. Многие веб-серверы не будут предоставлять список каталогов в качестве меры безопасности против попыток взлома.

Если вы управляете веб-сервером, вы можете перенастроить его для предоставления списка каталогов, а затем создать объект NSData с URL-адреса уровня каталогов (http://www.myUrl.com/pic/) и проанализировать его на вытащите все файлы в каталоге. Затем вы можете запросить каждое отдельное изображение и добавить его в массив самостоятельно.

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

В противном случае вы должны сделать некоторые довольно грязные/взломанные вещи, например, если предполагается, что не более n изображений, все изображения имеют имя файла «pic_m.png», а затем итерацию через цикл от 0 до n, пытающихся извлечь каждый файл, пока вы не нажмете ошибку.

Смежные вопросы