2012-05-13 44 views
1

我正在使用this tutorial工作在RSS阅读器上。所有表格单元格数据来自NSMutableArray实例(_allEntries)。然后我导入 EGOTableViewPullRefresh并添加[self refresh]-(void)reloadTableViewDataSourceself.refresh是填充allEntries的数据的方法)。 然后拉刷新工程,但每次刷新时单元格都会重复。我试图用两种方式解决它。当我使用EGOTableViewPullRefresh时,表格单元格会被复制

  1. 当从互联网上下载数据,添加if (![_allEntries containsObject:entry])[_allEntries insertObject:entry atIndex:insertIdx]之前,但它没有工作,也许我应该用entry.title或对象进行比较一些其他的属性,但它不是有效的。

  2. 就像我在-viewDidLoad中所做的那样,添加​​,但我不知道该在哪里放这一行。

有没有人能给我一个方向?

[编辑]
有没有在viewDidLoad中太多的逻辑,只是

self.allEntries = [NSMutableArray array]; 
    self.queue = [[NSOperationQueue alloc] init]; //add download&parse operation to a queue 
    self.feeds = [self getFeeds]; //load feeds from local file 

而且我把reloadTableViewDataSource [自刷新],我第一次打开我的应用程序,有没有在tableview中显示。然后我拉来刷新,它的工作。然后拉再次刷新,它得到了重复。
这是“刷新”方法。

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

我想,所以我再次写self.allEntries = [NSMutableArray的数组]重建阵列但事实证明
“无效更新:行的无效数在0节中包含的行的数量更新(1)后的现有部分必须等于更新(140)之前该部分中包含的行数“。
所以如上所述,我真的很困惑我应该把这条线放在哪里。
Thx ~~

回答

0

您在构建数组的viewDidLoad中的逻辑应该移到它自己的方法(reloadTableViewData)中,然后您只需在viewDidLoad中调用该方法。

[self reloadTableViewData]; 

当您执行刷新操作时,您也会调用相同的方法。

确保要重建阵列,而不只是将对象添加到现有的一个。

+0

我编辑了我的问题。谢谢你的建议:-) – wyp

相关问题