【问题标题】:Objective-C, iPhone RSS Reader Application Query - How to organize your RSS Feed Display into groups?Objective-C,iPhone RSS 阅读器应用程序查询 - 如何将您的 RSS 提要显示组织成组?
【发布时间】:2010-08-26 20:00:50
【问题描述】:

我的编程很不幸。我对 Objective-C 还是比较陌生,但我正在努力尽快学习。

我需要完成一个用于 iPhone 的 RSS 阅读器应用程序,这是一个相对简单的应用程序,它解析 rss 提要,将其显示在导航表视图中,当您单击一篇文章时,您将被带到主页。

不幸的是,我在解析方面遇到了困难。目前,该程序会下载所有文章,但我想以 10 个列表的形式显示它,并在底部显示一个下一步按钮。单击下一个按钮后,解析将继续并显示接下来的 10 个。

很抱歉,我现在无法向您展示我正在使用的代码,因为我在家用电脑上,而项目在办公室 mac 上。如果有人能给我一些想法,我将不胜感激。我尝试了许多方法(例如,制作一个额外的数组作为文章计数器,这样我就可以记录哪个文章是哪个列表)但是我一直遇到障碍,因为我只是不知道如何很好地使用该程序足以做到这一点。

拜托,我非常需要!谢谢。

【问题讨论】:

    标签: iphone parsing list rss code-organization


    【解决方案1】:

    (这又是我) 如果这相当模糊,我很抱歉,但我相信我可以提供示例代码。我试图让程序在解析 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 人为一组进行解析...我不知所措;_;

    感谢您的宝贵时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-06
      • 2013-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-02
      • 2015-08-06
      • 1970-01-01
      相关资源
      最近更新 更多