2009-03-02 5 views
1

J'ai un simple lecteur RSS. Les histoires sont téléchargées, placées dans un UITableView, et lorsque vous cliquez dessus, chaque histoire est chargée dans un UIWebView. Cela fonctionne très bien. Maintenant, cependant, je voudrais intégrer une image sur le côté gauche (comme vous le verriez dans l'application YouTube). Cependant, comme mon app provient d'un flux RSS, je ne peux pas simplement spécifier l'image X à apparaître dans la ligne X car la ligne X sera la ligne Y demain, et les choses vont se dérégler, vous savez? Je tire actuellement d'un YouTube RSS feed, et peut obtenir le titre de la vidéo, la description, la date de publication, mais je suis bloqué quant à la façon de tirer la petite vignette à côté de chaque entrée dans le flux.iPhone RSS vignette

Comme vous pouvez probablement le dire, je suis un débutant de codage (ceci étant ma première application autre qu'une application Hello World) et je suis tellement frustré par mon propre manque de connaissances.

Merci!

BTW, voici quelques exemples de code:

- (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]; 
    } 

} 

Répondre

1

Je recommande d'essayer TouchXML pour l'analyse syntaxique xml. Je trouve cela beaucoup plus facile de travailler avec.

Récupère l'URL de l'image comme si tu cherchais un autre champ de texte. Ensuite, lorsque vous créez l'objet et de l'ajouter à l'histoire faire quelque chose comme:

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

Hope this helps

+0

Hmm. La façon la plus simple de voir est d'utiliser attributeDict dans parserDidStart parce que c'est ainsi que tout le reste de mon code est configuré. Quelqu'un pourrait-il m'aider avec le code pour extraire l'attribut d'URL de media: thumbnail? Dev Docs: http://preview.tinyurl.com/cmhzch API YouTube: http://preview.tinyurl.com/az7tek –

0

le même problème, mais résolu avec des références de l'API Youtube,

considèrent cela comme ur alimentation youtube,

http://gdata.youtube.com/feeds/base/users/[insert UserName]/uploads

où u obtenir un xml avec les médias: vignette que vous pouvez utiliser pour afficher des images miniatures de youtube.

J'espère que cela vous aidera !!!

0

Je voudrais utiliser NSScanner pour analyser votre URL à partir de l'élément de flux et obtenir l'ID de la vidéo YouTube. Ensuite, j'utiliserais alors l'identifiant vidéo pour obtenir l'image miniature d'une URL. Vous pouvez choisir l'URL de vignette souhaitée à partir de cette réponse: https://stackoverflow.com/a/2068371/1484168