iPhone RSS уменьшенное изображение - PullRequest
1 голос
/ 02 марта 2009

У меня есть простая программа для чтения RSS. Истории загружаются, помещаются в UITableView, и при нажатии на них каждая история загружается в UIWebView. Работает отлично. Теперь я хотел бы добавить изображение на левой стороне (как вы могли бы увидеть в приложении YouTube). Однако, так как мое приложение получает из RSS-канала, я не могу просто указать изображение X, которое будет отображаться в строке X, потому что строка X будет завтра строкой Y, и все станет не по порядку, понимаете? В настоящее время я выполняю извлечение из RSS-канала YouTube и могу получить название видео, описание, дату публикации, но я застрял в том, как вытащить маленький эскиз рядом с каждой записью в ленте.

Как вы, вероятно, можете сказать, я новичок в области кодирования (это мое первое приложение, отличное от приложения Hello World), и я так расстроен из-за собственной нехватки знаний.

Спасибо!

Кстати, вот пример кода:

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{            
    //NSLog(@"found this element: %@", elementName);
    if (currentElement) {
        [currentElement release];
        currentElement = nil;
    }
    currentElement = [elementName 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];
    }

}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{     
    //NSLog(@"ended element: %@", elementName);
    if ([elementName isEqualToString:@"item"]) {
        // save values to an item, then store that item into the array...
        [item setObject:currentTitle forKey:@"title"];
        [item setObject:currentLink forKey:@"link"];
        [item setObject:currentSummary forKey:@"summary"];
        [item setObject:currentDate forKey:@"date"];

        [stories addObject:[item copy]];
        NSLog(@"adding story: %@", currentTitle);
    }

}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
    //NSLog(@"found characters: %@", string);
    // save the characters for the current item...
    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];
    }

}

Ответы [ 3 ]

1 голос
/ 02 марта 2009

Я бы порекомендовал попробовать TouchXML для разбора xml. Мне намного легче работать.

Получить URL для изображения, как вы получаете любое другое текстовое поле. Затем, когда вы создаете объект и добавляете его в историю, делайте что-то вроде:

currentImage = [UIImage imageWithData:[NSData dataWithContentsOfURL: [NSURL URLWithString: theUrl]]]

Надеюсь, это поможет

0 голосов
/ 20 июня 2013

Я бы использовал NSScanner, чтобы отсканировать ваш URL из элемента фида и получить идентификатор видео YouTube. Затем я бы использовал идентификатор видео, чтобы получить эскиз изображения из URL. Вы можете выбрать, какой миниатюрный URL вы хотите получить из этого ответа здесь: https://stackoverflow.com/a/2068371/1484168

0 голосов
/ 03 ноября 2010

Имеют ту же проблему, но решаются с помощью ссылок из Youtube API,

рассмотрите это как канал youtube,

http://gdata.youtube.com/feeds/base/users/[insert UserName] / Загружено

где вы получите xml с тегом media: thumbnail, который вы можете использовать для отображения миниатюр изображений youtube.

Надеюсь, это поможет тебе !!!

...