2009-03-02 2 views
1

Ich habe einen einfachen RSS-Reader. Stories werden heruntergeladen, in eine UITableView-Datei eingefügt. Wenn Sie darauf klicken, wird jede Story in einem UIWebView geladen. Es funktioniert großartig. Jetzt möchte ich jedoch ein Bild auf der linken Seite einfügen (wie Sie es in der YouTube App sehen würden). Da meine App jedoch von einem RSS-Feed abruft, kann ich nicht einfach angeben, dass Bild X in Zeile X erscheint, da Zeile X morgen Zeile Y ist, und die Dinge werden außer Betrieb geraten, weißt du? Ich ziehe gerade von einem YouTube RSS feed, und kann den Videotitel, die Beschreibung, das Veröffentlichungsdatum bekommen, aber ich bin fest, wie man das kleine Thumbnail neben jedem Eintrag im Feed zieht.iPhone RSS thumbnail

Wie Sie wahrscheinlich sagen können, bin ich ein Coding Newbie (das ist meine erste Anwendung, außer einer Hello World App) und ich bin so frustriert von meinem eigenen Mangel an Wissen.

Danke!

BTW, hier einige Beispielcode:

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

} 

Antwort

1

Ich empfehle TouchXML für XML-Analyse würde auszuprobieren. Ich finde es viel einfacher mit zu arbeiten.

Holen Sie die URL für das Bild wie Sie ein beliebiges anderes Textfeld holen. Dann, wenn Sie das Objekt erstellen, und fügen Sie die Geschichte so etwas wie:

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

hoffe, das hilft

+0

Hmm. Der einfachste Weg, den ich sehe, ist die Verwendung von attributeDict in parserDidStart, weil so der gesamte Rest meines Codes eingerichtet ist. Könnte mir jemand mit dem Code helfen, das URL-Attribut des Mediums zu extrahieren: Thumbnail? Dev Docs: http://preview.tinyurl.com/cmhzch YouTube-API: http://preview.tinyurl.com/az7tek –

0

das gleiche Problem haben, aber mit Referenzen von Youtube API gelöst,

betrachten dies als ur youtube-Feed,

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

wo u eine xml mit Medien erhalten wird: Thumbnail-Tag, mit dem Sie Thumbnails von youtube anzeigen können.

Hoffe, es wird dir helfen !!!

0

Ich würde NSScanner verwenden, um Ihre URL aus dem Feedelement zu scannen und die Youtube-Video-ID zu erhalten. Dann würde ich dann die Video-ID verwenden, um das Miniaturbild von einer URL abzurufen. Sie können wählen, welche Thumbnail-URL Sie von dieser Antwort hier haben möchten: https://stackoverflow.com/a/2068371/1484168