2012-09-01 156 views
0

我試圖讓博客應用程序刷新文章,並添加自從發佈之前可能已寫入的任何新文章。更新博客文章的TableView問題

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

您需要發佈刷新代碼。這可能是問題所在。 – rdelmar

+0

該代碼在應用加載時工作得很好。 有關更多代碼,請參閱編輯原始問題。 – user717452

回答

1

它在第一次加載時起作用,因爲在您調用刷新之前,Feed會填充到viewDidLoad方法中。當你刪除所有對象然後調用刷新時,數組中沒有任何內容,因此出現了界限錯誤。您應該將所有代碼(除[self refresh]以外的代碼)移出viewDidLoad並移入刷新方法。

0

如果_allEntries用作表視圖的數據源,那麼你必須[_allEntries removeAllObjects]之後調用[self.tableView reloadData]