0

我正在尝试获取一个博客应用程序来刷新文章,并添加自上次发布以来可能已经编写的任何新文章。

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];
}
4

2 回答 2

1

它在您第一次加载时起作用,因为在您调用刷新之前,提要已在您的 viewDidLoad 方法中填充。当您删除所有对象然后调用刷新时,数组中没有任何内容,因此出现越界错误。您应该将所有代码([self refresh] 除外)移出 viewDidLoad 并进入 refresh 方法。

于 2012-09-01T05:06:20.010 回答
0

如果_allEntries用作表格视图的数据源,则必须调用[self.tableView reloadData]after [_allEntries removeAllObjects]

于 2012-09-01T05:05:46.767 回答