我正在尝试使用博客应用来刷新文章,并添加自上次发布以来可能已编写的任何新文章。
TableView使用数组_allEntries。有人告诉我,当用户点击刷新按钮时,我应该清除数组,清除后,运行原始启动代码来解析rss并重新填充表格视图。我这样做:
[_allEntries removeAllObjects];
[self refresh];
然而,当我这样做时,它会因错误而崩溃:
*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 4 beyond bounds for empty array'
关于我做错了什么的想法?
编辑:这是我的viewDidLoad和刷新代码,以及更新代码。
- (void)viewDidLoad { [super viewDidLoad];
self.allEntries = [NSMutableArray array];
self.queue = [[[NSOperationQueue alloc] init] autorelease];
self.feeds = [NSArray arrayWithObjects:@"feedurlhere", nil];
[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)updatearticle {
[_allEntries removeAllObjects];
[self refresh];
}
答案 0 :(得分:1)
首次加载时它会起作用,因为在调用refresh之前,feed会在viewDidLoad方法中填充。当您删除所有对象然后调用刷新时,数组中没有任何内容,因此出现了越界错误。您应该将所有代码([自刷新]除外)移出viewDidLoad并移入refresh方法。
答案 1 :(得分:0)
如果_allEntries
用作表格视图的数据来源,则必须在[self.tableView reloadData]
之后致电[_allEntries removeAllObjects]
。