使用ASIHTTPRequest添加新Feed后获取重复的Feed

时间:2013-07-25 12:46:57

标签: ios rss asihttprequest

我正在开发一个应用程序,在桌面视图中显示来自多个网站的供稿,用户可以在其中添加其他供稿。

我使用ASIHTTPRequest基于以下tutorial创建了应用程序。

所以,我的问题是,在我添加新链接后,在刷新方法后,我从所有来源获得重复的帖子。

这是我的viewDidLoad方法:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.title =@"Lajmet";
    self.navigationController.navigationBar.tintColor = [UIColor blackColor];
    self.allEntries = [NSMutableArray array];
    self.queue = [[NSOperationQueue alloc] init];
    self.feeds = [NSMutableArray arrayWithObjects:@"http://pcworld.al/feed",@"http://geek.com/feed", @"http://feeds.feedburner.com/Mobilecrunch",@"http://zeri.info/rss/rss-5.xml", 
                  nil];

    [self.tableView reloadData];

    [self refresh];


}

刷新方法如下所示:

-(void)refresh
{
    for (NSString *feed in _feeds)
    {
        NSURL *url = [NSURL URLWithString:feed];
        ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
        [request setDelegate:self];
        [_queue addOperation:request];
    }
}

在此screenshot中,您可以看到应用程序的外观以及添加屏幕如何适用于新来源。我配置了完成按钮,以便它自动添加一个Feed以测试它是否有效。

-(void)addSourcesViewController:(AddSourcesViewController *)controller didAddSource:(RSSEntry *)source
{    
    Source *newSource = [[Source alloc] init];
    newSource.name = @"Test";
    newSource.link = @"http://lajmeshqip.com/feed";
    [self.feeds addObject:newSource.link];
    NSLog(@"%@", self.feeds);
    [self dismissViewControllerAnimated:YES completion:nil];

    [self refresh];

}

所以我的问题是,在点击完成按钮后,所有条目都是重复的,它们会显示在tableview中。我尝试在最后一个方法中使用[self.tableView reloadData];而不是[self refresh];,但之后根本没有出现新链接。

有没有办法使用ASIHTTPRequest加载最后一个条目或我可以遵循的任何提示?我是新手,不知道应遵循哪种方法。任何帮助将不胜感激。

非常感谢!

花岗岩

1 个答案:

答案 0 :(得分:0)

我假设cellRows是从self.allEntries创建的。因此,如果您向self.feeds添加新的Source,则在下载之前清理self.allEntries数组[self.allEntries removeAllObjects];,因为在刷新方法中,您已经在重新加载所有提要。完成下载后,重新加载tableview数据。