UITable view, загрузка изображений из rss-канала

Я читаю xml-изображения из RSS-канала и анализирую их в представлении UITable. Все работает нормально, но для загрузки содержимого изображения в виде таблицы требуется время. Экран остается замороженным. Я использую NSXMLParser для анализа изображения. Не могли бы вы, ребята, помочь мне, я был бы очень благодарен. Ниже приведен код.

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:  (NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{          
    //NSLog(@"found this element: %@", elementName);
    currentElement = [elementName copy];
    currentElement1=[attributeDict copy];
    if ([elementName isEqualToString:@"item"]) {
        // clear out our story item caches...
        item = [[NSMutableDictionary alloc] init];
        currentTitle = [[NSMutableString alloc] init];
        currentDate = [[NSMutableString alloc] init];
        currentSummary = [[NSMutableString alloc] init];
        currentLink = [[NSMutableString alloc] init];
        currentString=[[NSMutableString alloc] init];
        //currentImage = [[NSMutableString alloc] init];
        currentContent=[[NSMutableString alloc]init];   
    }
    if ([attributeDict objectForKey:@"url"]) 
    {
        currentString=[attributeDict objectForKey:@"url"];
        //  NSLog(@"what is my current string:%@",currentString);
        [item setObject:currentString forKey:@"url"];

    }

}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{     

    if ([elementName isEqualToString:@"item"]) {
        [item setObject:currentTitle forKey:@"title"];
        [item setObject:currentLink forKey:@"link"];
        [item setObject:currentSummary forKey:@"description"];
        [item setObject:currentContent forKey:@"content:encoded"];
        [item setObject:currentDate forKey:@"pubDate"];
        [stories addObject:[item copy]];

    }
}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
    //NSLog(@"found characters: %@", string);
    // save the characters for the current item...///////////element
    if ([currentElement isEqualToString:@"title"]) {
        [currentTitle appendString:string];
    } else if ([currentElement isEqualToString:@"link"]) {
        [currentLink appendString:string];
    } else if ([currentElement isEqualToString:@"description"]) {
        [currentSummary appendString:string];
    } else if ([currentElement isEqualToString:@"pubDate"]) {
        [currentDate appendString:string];

    }
    else if ([currentElement isEqualToString:@"content:encoded"]) {
        [currentSummary appendString:string];
    }
}

    NSString *imagefile1 = [[stories objectAtIndex:indexPath.row]objectForKey:@"url"]; 
    NSString *escapedURL=[imagefile1 stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
    UIImage *image1 = [[UIImage alloc]initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:escapedURL]]];
    cell.imageView.image=image1;
    [image1 release];

cell.textLabel.backgroundColor=[UIColor clearColor];
    cell.textLabel.numberOfLines=2;
    cell.textLabel.text=[[stories objectAtIndex:indexPath.row] objectForKey: @"title"];
    cell.detailTextLabel.backgroundColor=[UIColor clearColor];
    cell.detailTextLabel.numberOfLines=3;
    cell.detailTextLabel.text=[[stories objectAtIndex:indexPath.row] objectForKey: @"pubDate"];

person kingston    schedule 10.03.2011    source источник


Ответы (2)


Используйте отложенную загрузку для загрузки изображений....

person Mihir Mehta    schedule 10.03.2011
comment
@mehta: чувак, я ценю ... но эти вещи выглядят немного сложными, я нуб .... возможно ли ускорить эти вещи любым другим способом, используя nsxmlparser - person kingston; 10.03.2011
comment
Ваш код подходит для загрузки изображений... вам просто нужно загрузить определенные изображения в фоновом потоке, используя тот же код... чтобы ваша таблица прокручивалась плавно... извините, но вам нужно уделить этому немного времени... другой вам нужно освободить память, которую вы выделяете в didStartElement, но это не связано - person Mihir Mehta; 10.03.2011
comment
не могли бы вы помочь мне, в какой части приведенного выше кода ... я точно должен использовать поток - person kingston; 10.03.2011
comment
NSString *imagefile1 = [[stories objectAtIndex:indexPath.row]objectForKey:@url]; NSString *escapedURL=[imagefile1 stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]; UIImage *image1 = [[UIImage alloc]initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:escapedURL]]]; ячейка.imageView.image=image1; [выпуск image1]; - person Mihir Mehta; 10.03.2011
comment
Это не так просто... вам нужно сослаться на этот код, чтобы узнать, как это сделать в uitableview. - person Mihir Mehta; 10.03.2011
comment
я работал с другим проектом ... где щелчок по определенной ячейке табличного представления (без изображения в табличном представлении) переводит вас в другое представление .... где он загружает flicer rss изображения ... у меня была проблема с тем, когда щелкал ячейку табличного представления .. зависает экран ... требуется, вероятно, 60 секунд, чтобы загрузить следующее представление, где загружаются rss-изображения .... спасибо за тему, которую вы упомянули ... я смог перейти к следующему экрану, который не зависает, но требует времени чтобы изображение загружалось при следующем просмотре ..... cud u help me wid dis .. в любом случае спасибо - person kingston; 10.03.2011
comment
просто щелкните прозрачную стрелку tik mark чуть ниже левой части моего ответа ... чуть ниже ‹ 0 › (вертикально) - person Mihir Mehta; 10.03.2011

несколько устарело, но должно направить вас в правильном направлении

http://kosmaczewski.net/2009/03/08/асинхроннаязагрузка-изображений-in-a-uitableview/

person Jason Bugs Adams    schedule 10.03.2011
comment
он использует NSXMLParser. см. строку 54 https://github.com/akosma/async-uitableview/blob/master/Classes/Helpers/RSS.m - person Jason Bugs Adams; 10.03.2011