2010-08-26 56 views
0

我一直非常不幸与我的编程。我对Objective-C还比较陌生,但我正在尽可能快地学习。Objective-C,iPhone RSS阅读器应用程序查询 - 如何将RSS源显示组织到组中?

我需要为iPhones应用程序完成一个RSS阅读器,这是一个相对简单的应用程序,它解析rss提要,在导航表视图中显示该应用程序,以及当您点击一篇文章时,您将转到主页面。

不幸的是,我在解析方面存在困难。目前,该程序下载所有文章,但我希望将其显示在10个列表中,以及底部的下一个按钮。点击下一个按钮后,解析继续进行,并显示下10个按钮。

我很抱歉,但我不能告诉你我目前使用的代码,因为我在家用电脑上,而且该项目在办公室的Mac上。如果有人能给我一些想法,我会非常感激。我已经尝试了一些方法(使另一个数组充当文章计数器,以便我可以记录哪个文章是哪个列表的例子),但是我一直遇到障碍,因为我只是不知道如何很好地使用该程序足以做到这一点。

请,我需要很多!谢谢。

回答

0

(这是我再次) 如果这很含糊,但我相信我可以给出示例代码,我很抱歉。我试图让程序在解析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和实测值的字符部分:

- (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组解析...我很茫然 ;_;

谢谢你的时间。