我正在使用本教程开发 RSS 阅读器。所有表格单元格数据都来自一个NSMutableArray
实例 (_allEntries)。然后我导入
EGOTableViewPullRefresh
并添加[self refresh]
(-(void)reloadTableViewDataSource
是self.refresh
一种填充 allEntries 数据的方法)。然后拉刷新作品,但每次我刷新时都会重复单元格。我试图通过两种方式解决它。
从互联网下载数据时,
if (![_allEntries containsObject:entry])
之前添加[_allEntries insertObject:entry atIndex:insertIdx]
但它不起作用,也许我应该使用entry.title
对象中的或其他一些属性来比较但它没有效果。就像我在
-viewDidLoad
, add中所做的一样self.allEntries = [NSMutableArray array]
,但我不知道我应该把这条线放在哪里。
有没有人可以给我一个方向?
[编辑]
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
我将[self refresh]放在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 array] 但结果是
“无效更新:第 0 节中的行数无效。更新后现有节中包含的行数 (1) 必须等于更新之前该部分中包含的行数(140)”。
如前所述,我真的很困惑我应该把这条线放在哪里。
谢谢~~