2014-01-30 74 views
1

我在使用tableView時遇到了一些麻煩。 在這種情況下,我有4個部分。cellForRowAtIndexPath - objectAtIndex超出範圍

部分0,1,2有1個單元格。 第3節有2個單元。

現在我接收到錯誤,

終止應用程序由於未捕獲的異常 'NSRangeException',原因: ' - [__ NSCFArray objectAtIndex:]:索引(1)超過界限(1)'

現在我明白這是試圖引用不在該部分內的單元格嗎?

我在哪裏掙扎是每個部分的計數是正確的,就像下面一樣。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    NSLog(@"Sections: %d", [_timetableDataArray count]); 
    return [_timetableDataArray count]; 
} 

這返回,如所預期,

節數:4

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    NSDictionary *sectionContents = [_timetableDataArray objectAtIndex: section]; 
    NSLog(@"Section %d contains %d items", section, [sectionContents count]); 

    return [sectionContents count]; 
} 

該日誌用於上述的回報,

第3包含2項

第0包含1項

第1包含1項

第2部分包括1項

這是完全正確的。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 


    NSLog(@"Iterating --- section: %d row: %d", indexPath.section, indexPath.row); 

} 

上述方法甚至從來沒有得到NSLog。它在此之前崩潰。

如果我改變我的數據數組,所以每個部分有2個項目,一切工作正常。

這是我的數據,http://pastebin.com/q5rbsvC8 我只是不明白這個崩潰來自何時numberOfRowsInSection返回每節的正確的行數。

我原本以爲這可能是一個0索引的問題,但我改變了這些從1開始,並沒有幫助。

任何幫助/建議,非常感謝。

感謝, 阿德里安

+0

你有沒有嘗試並返回'cellForRowAtIndexPath'中的UITableViewCell?你可以在這裏使用模板代碼 – MrBr

+0

嗨,是的,我加載數據之前返回一個測試單元格,這看起來很好。一旦我爲我的tableView設置了數據並嘗試重新加載它,就會發生錯誤。謝謝。 – Adrian

+1

所以當你調用'[_tableView reloadData]'時它只會崩潰? – MrBr

回答

0

嘗試NSLog- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)sectionsection

NSDictionary *sectionContents = [_timetableDataArray objectAtIndex: section]; 

之前,看是否section任何意外的值來了?

+0

嗨,我得到 - 第3部分,第0部分,第1部分,第2部分。 – Adrian

+0

我不知道爲什麼排序很奇怪,但我讀過這並不重要。 – Adrian

+0

我應該補充說,如果每個部分有2個或更多的項目,一切都很好。 – Adrian

相關問題