RSS フィードを解析するために NSXmlParser を使用しています。これまでのところ、すべてうまくいっています。
RSS フィードには、最終的に数十または数百の投稿が含まれることになると予想しています。私の現在の解決策は、RSS フィード全体を読み取り、結果を表示することです。ただし、最初の 10 件の投稿のみを読みたいと考えています (数百のアイテムを解析するのを防ぐため)。その後 (ユーザーがテーブルの最後に到達したときなど)、次の 10 件の投稿を解析します。
したがって、私の質問は、最初の 10 件の投稿を解析し、次の 10 件の投稿を解析し、次の 10 件の投稿などを解析する方法です...
すべての投稿を取得するために使用しているものは次のとおりです。
- (void)parseXMLFileAtURL:(NSString *)URL
{
myArray = [[NSMutableArray alloc] init];
//convert the path to a proper NSURL or it won't work
NSURL *xmlURL = [NSURL URLWithString:URL];
rssParser = [[NSXMLParser alloc] initWithContentsOfURL:xmlURL];
[rssParser setDelegate:self];
[rssParser parse];
}
- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError {
//error
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
currentElement = [elementName copy];
if ([elementName isEqualToString:@"item"]) {
//clear out our story item caches...
item = [[NSMutableDictionary alloc] init];
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
if ([elementName isEqualToString:@"item"]) {
// save values to an item, then store that item into the array...
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
// save the characters for the current item...
}
- (void)parserDidEndDocument:(NSXMLParser *)parser {
[myTable reloadData];
}