シンプルな RSS リーダーがあります。ストーリーがダウンロードされ、UITableView に配置されます。クリックすると、各ストーリーが UIWebView に読み込まれます。それはうまくいきます。ここで、左側に画像を組み込みたいと思います (YouTube アプリで見られるように)。しかし、私のアプリは RSS フィードからプルするので、画像 X を行 X に表示するように単純に指定することはできません。なぜなら、行 X が明日行 Y になり、物事がうまくいかなくなるからです。私は現在、YouTube RSS フィードからプルしており、ビデオのタイトル、説明、公開日を取得できますが、フィード内の各エントリのほかに小さなサムネイルをプルする方法に行き詰まっています。
お分かりのように、私はコーディングの初心者 (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];
}
}