0

我正在开发一个应用程序,它在表格视图中显示来自多个网站的提要,用户可以在其中添加其他提要。

我使用 ASIHTTPRequest根据以下 教程创建了该应用程序。

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

这是我的 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];
    }
}

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

-(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];

}

所以我的问题是,在点击完成按钮后,所有条目都被复制,并且它们显示在表格视图中。我尝试在最后一种方法中使用[self.tableView reloadData];而不是,[self refresh];但是新链接根本没有出现。

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

非常感谢!

花岗岩

4

1 回答 1

0

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

于 2013-07-25T13:08:56.340 回答