Асинхронная загрузка изображений в ячейки таблицы

После поиска в Интернете в течение нескольких недель и множества сообщений здесь, в стеке, я не могу найти способ реализовать это в своем проекте.
У меня есть plist в моей учетной записи dropbox. одна из строк в plist в одном из словарей с именем "cellPic".
Я хочу отображать фотографии магазинов, которые есть в моем Dropbox, в ячейках таблицы.
Plist загружается на мой путь к документам:

-(void)readPlistFromServerAndSaveToDocs
    {
    //save plist from server to docs:
    NSArray *tempArr1 = [[NSArray alloc]initWithContentsOfURL:
                         [NSURL URLWithString:@"http://dl.dropbox.com/u/4082823/AppsFiles/Black/stores.plist"]];
    NSString *error;
    NSString *rootPath =
    [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES) objectAtIndex:0];
    NSString *plistPath = [rootPath stringByAppendingPathComponent:@"stores.plist"];
    NSArray *tmpArr = [NSArray arrayWithArray:tempArr1];
    NSData *tmpData = [NSPropertyListSerialization dataFromPropertyList:tmpArr
                                                             format:NSPropertyListXMLFormat_v1_0 errorDescription:&error];

    NSLog(@"plistPath=%@",plistPath);

    if(tmpData)
    {
        [tmpData writeToFile:plistPath atomically:YES];
    }

    else 
    {
        NSLog(@"%@",error);
    }

    //Announcement if there is no server connection: 

    if(tempArr1.count == 0)
    {
        [self plistMessages];
    }
}

Пока все ок...

В моем TableViewController с помощью этого метода я хочу реализовать асинхронную загрузку изображений для ячеек.

- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

Моя цель - асинхронно читать/загружать изображения, но я не знаю, как это происходит - нужно ли мне читать строки в моем plist на моем пути к документам, которые содержат полный URL-адрес изображения, или мне нужно загрузить изображения с сервера в мои документы, а затем прочитать их в ячейку?
В моем случае - позиции ячеек меняются, потому что они сортируются по местоположению пользователя (ближайшее к пользователю хранилище находится в верхней части таблицы), поэтому я думаю, что мне нужно прочитать это из моего plist.
Это URL-адрес одной из моих фотографий: http://dl.dropbox.com/u/4082823/AppsFiles/Black/ramat-hasharon.png
Как лучше всего это сделать и как скачать все изображения png сразу (если нужно)?
Я пытался сделать это с помощью этого руководства, но ничего не вышло.
http://www.switchonthecode.com/tutorials/loading-images-asynchronously-on-iphone-using-nsinvocationoperation
Будем признательны за помощь!
Спасибо!


person Maor Zohar    schedule 27.02.2012    source источник


Ответы (1)


Взгляните на пример кода Apple LazyTableImages.

person lawicko    schedule 27.02.2012
comment
Спасибо, lawicko, я смотрел на это ранее, но похоже, что нужно реализовать много кода и подклассов. я уверен, что есть короткий способ сделать это из кодов, которые я видел в сети, но я все запутался и не знаю, как это сделать:/ - person Maor Zohar; 27.02.2012
comment
Серьезно? Там есть только два класса, которые должны вас заинтересовать, IconDownloader и RootViewController. Я покупаю пиво, если вы найдете более простой пример, чем этот. - person lawicko; 27.02.2012
comment
:) ох, я думал, что они мне нужны все! извините .. я попробую заставить это работать с этим примером .. извините, я новичок в xcode ... если он работает - я куплю вам пива ;) - person Maor Zohar; 27.02.2012
comment
+1 за отличную ссылку. Немного отформатировал ваш ответ - надеюсь, вы не возражаете. - person Rok Jarc; 21.03.2012
comment
@AlexisW Поскольку это не имеет никакого отношения к этому вопросу, вам следует создать новый вопрос и точно описать проблему, с которой вы столкнулись, особенно вставить все ошибки, которые вы видите, и как можно больше кода. - person lawicko; 07.06.2012