更新博客文章问题的TableView

时间:2012-09-01 04:22:24

标签: iphone ios xcode uitableview refresh

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

如果_allEntries用作表格视图的数据来源,则必须在[self.tableView reloadData]之后致电[_allEntries removeAllObjects]