2011-08-05 49 views
0

我有一個NSMutableArray,我用UITableView。我對着奇怪的問題是,NSMutableArray只有25個項目

[results removeObjectAtIndex:rowIndexPath.row]; 
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:rowIndexPath] withRowAnimation:UITableViewRowAnimationFade]; 

只對表的第一個25個元素,而是崩潰26日?我的代碼中沒有任何地方提及25,我爲此感到茫然。

所有元素通過UITableView正確顯示,因此它們已被正確插入表中。

任何幫助?

+0

如果你說它是如何崩潰 – greenisus

回答

1

很有可能是因爲您從索引中刪除項目時,您並未重新加載表格,因此rowIndexPath.row值未正確調整,因此您將超出陣列的大小。

1

只是一個猜測:

隨着removeObjectAtIndex:(NSUInteger)index,您可以在文檔中看到:填補了國內空白,超越指數的所有元素都從他們的指數減去1移動。所以你摺疊元素,你不能迭代數組的數量而不更新長度,否則你會嘗試讀取一個無效的索引,只是因爲列表由於之前的刪除而摺疊,並且它比你期望的要短。

+0

會更容易幫助但是爲什麼前25行總是工作?它只是第26行失敗,始終如一。當我試圖刪除第26行時,崩潰正好在這條線上,而不是在我期望遇到麻煩的數組末尾。 –

+0

這可能只是一個特定的情況,你引用了一些界限以外的東西。通過刪除索引0處的元素反覆嘗試此操作。 [results removeObjectAtIndex:0]; 您應該能夠像這樣刪除陣列中的所有元素。它應該證明什麼傑克說 –

+0

但長度是按照重新計算所需的時間。我可以連續刪除第25行的元素(如果它超過25行),沒有問題。 –