【发布时间】:2012-05-13 08:30:42
【问题描述】:
我正在使用 this tutorial 开发 RSS 阅读器。所有表格单元格数据都来自 NSMutableArray 实例 (_allEntries)。然后我导入
EGOTableViewPullRefresh 并在-(void)reloadTableViewDataSource 中添加[self refresh](self.refresh 是一种填充 allEntries 数据的方法)。
然后拉刷新作品,但每次我刷新时都会重复单元格。我尝试通过两种方式解决它。
从网上下载数据时,在
[_allEntries insertObject:entry atIndex:insertIdx]前加上if (![_allEntries containsObject:entry]),但不起作用,也许我应该在对象中使用entry.title或其他一些属性来比较,但它没有效果。和我在
-viewDidLoad做的一样,加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)”。
如前所述,我真的很困惑我应该把这条线放在哪里。
谢谢~~
【问题讨论】:
标签: objective-c ios uitableview