我想用下面的代碼更新UITableView
:的UITableView的「試圖刪除部分」斷言失敗
NSMutableIndexSet *sectionsToDelete = [NSMutableIndexSet indexSet];
NSMutableIndexSet *sectionsToInsert = [NSMutableIndexSet indexSet];
NSMutableIndexSet *sectionsToReload = [NSMutableIndexSet indexSet];
/* ... */
[[self tableView] beginUpdates];
if ([sectionsToReload count]) {
DBGLogObject(sectionsToReload);
[[self tableView] reloadSections:sectionsToReload withRowAnimation:animation];
}
if ([sectionsToDelete count]) {
DBGLogObject(sectionsToDelete);
[[self tableView] deleteSections:sectionsToDelete withRowAnimation:animation];
}
if ([sectionsToInsert count]) {
DBGLogObject(sectionsToInsert);
[[self tableView] insertSections:sectionsToInsert withRowAnimation:animation];
}
[[self tableView] endUpdates];
登錄:
sectionsToReload = <NSMutableIndexSet: 0x71b19f0>[number of indexes: 2 (in 1 ranges), indexes: (1-2)]
sectionsToInsert = <NSMutableIndexSet: 0x71ac570>[number of indexes: 3 (in 2 ranges), indexes: (0 3-4)]
(注意有日誌中沒有sectionsToDelete
)
問題是即使沒有刪除,我得到一個錯誤:
2012-10-04 19:21:16.769 Syntax[903:c07] *** Assertion failure in -[UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit_Sim/UIKit-2372/UITableView.m:826
2012-10-04 19:24:51.655 Syntax[903:c07] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'attempt to delete section 2, but there are only 2 sections before the update'
任何想法?
行或區段的號碼是什麼日誌sectionsToDelete的表現? – rdelmar
什麼都沒有。它甚至不在那裏 - 如果([sectionsToDelete count])評估爲false。 –
我無法複製您的錯誤。當我添加你的代碼時,我沒有遇到任何錯誤,但問題可能在於你如何更新你的數據源。您應該在完成此操作的位置發佈整個方法,包括數據源更新。我不知道如何在沒有刪除的情況下獲得刪除錯誤。 – rdelmar