(Это снова я) Мне очень жаль, если это довольно расплывчато, но я верю, что могу привести пример кода.Я пытаюсь сделать так, чтобы программа делала паузу после разбора 10 статей, отображает эти 10, затем продолжает анализ и отображает еще 10, если нажата следующая кнопка.
В parser.m я написал:
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *) namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
currentElement = [elementName copy];
if ([elementName isEqualToString:@"item"]) {
item = [[NSMutableDictionary alloc] init];
self.currentTitle = [[NSMutableString alloc] init];
self.currentDate = [[NSMutableString alloc] init];
self.currentSummary = [[NSMutableString alloc] init];
self.currentLink = [[NSMutableString alloc] init];
self.currentImage = [[NSMutableString alloc] init];
}//IF END
//podcast url is an attribute of the element enclosure
if ([currentElement isEqualToString:@"enclosure"]) {
[currentImage appendString:[attributeDict objectForKey:@"url"]];
NSLog(@"Image = %@", currentImage);
}//IF END
else if([currentElement isEqualToString:@"img"]){
[currentImage appendString:[attributeDict objectForKey:@"src"]];
NSLog(@"Image = %@", currentImage);
}//ELSE IF END
}
У меня также есть раздел с символами didEndElement и Found:
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *) namespaceURI qualifiedName:(NSString *)qName{
if ([elementName isEqualToString:@"item"]) {
[item setObject:self.currentTitle forKey:@"title"];
[item setObject:self.currentLink forKey:@"link"];
[item setObject:self.currentSummary forKey:@"summary"];
[item setObject:self.currentImage forKey:@"image"];
// Parse date here
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4];
[dateFormatter setDateFormat:@"EEE, d MMM yyyy"]; // Thu, 18 Jun 2010 04:48:09 -0700
NSLog(@"FC date1 = %@", self.currentDate);
NSDate *date = [[NSDate alloc] init];
date = [dateFormatter dateFromString:currentDate];
NSLog(@"FC date2 = %@", date);
[item setObject:self.currentDate forKey:@"date"];
//[item setObject:date forKey:@"date"];
[date release];
[items addObject:[item copy]];
NSLog(@"Item details = %@", items);
[count addObject:[item objectForKey:@"title"]];
NSLog(@"count = %@", count);
}//IF END
}
У меня также были некоторые проблемыс форматированием даты, но это незначительная проблема.
также:
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
if ([currentElement isEqualToString:@"title"]) {
[self.currentTitle appendString:string];
} else if ([currentElement isEqualToString:@"link"]) {
[self.currentLink appendString:string];
} else if ([currentElement isEqualToString:@"image"]) {
[self.currentImage appendString:string];
} else if ([currentElement isEqualToString:@"description"]) {
[self.currentSummary appendString:string];
} else if ([currentElement isEqualToString:@"pubDate"]) {
[self.currentDate appendString:string];
NSCharacterSet* charsToTrim = [NSCharacterSet characterSetWithCharactersInString:@" \n"];
[self.currentDate setString: [self.currentDate stringByTrimmingCharactersInSet: charsToTrim]];
}//IF-ELSE-IF END
}
Я был бы очень признателен, если бы кто-то мог дать мне подсказку о том, чтосделать паузу в программе ... или разрешить мне разобрать группы по 10 ... Я в растерянности; _;
Спасибо за потраченное время.