应用程序崩溃时,我想用tableview.deleteRows(在:与:)

问题描述:

我已经看到了很多话题关于这个问题,但我仍然有错误...应用程序崩溃时,我想用tableview.deleteRows(在:与:)

这是我在的tableview委托方法代码

self.tableView.beginUpdates() 

if self.data[sectionType]!.isEmpty { 
    self.data.removeValue(forKey: sectionType) 
} 

self.tableView.deleteRows(at: [indexPath], with: .fade) 
self.tableView.endUpdates() 

我已经实现了numberOfSections委托方法是这样的::(当用户刷卡并点击单元上的删除按钮被调用)

func numberOfSections(in tableView: UITableView) -> Int { 
    return data.count 
} 

这是错误我得到:

***终止应用程序由于未捕获的异常“NSInternalInconsistencyException”,理由是:“内部的UITableView错误:无法生成与老款数的新的部分地图:1,新区段计数:0

我得到同样的错误,如果我通过reloadData()替换deleteRows(在tableView中)方法...

我用断点检查,我在错误发生时输入if条件。所以数据被更新(removeValue()调用后的0个元素),我调用了deleteRows方法。

感谢您的帮助。

+2

您是否使用了numberOfRowsInSection方法? –

你想删除一行或一节吗?

if self.data[sectionType]!.isEmpty { 
    self.data.removeValue(forKey: sectionType) 
} 

建议您试图删除一节。如果你是它应遵循这一类的东西:

let indexSet = NSMutableIndexSet() 
indexSet.addIndex(section) 
self.tableView.deleteSections(indexSet, withRowAnimation: .fade) 

如果你想删除一行,则顶部更改到这样的事情:

if self.data[sectionType]!.isEmpty { 
    self.data[sectionType].remove(at: rowToRemove) 
} 
+0

你完全正确!我想删除一个部分。我没有使用正确的UITableView方法。 deleteSections()方法修复了我的问题:) 谢谢! –

看起来你可能删除部分中的所有行,而不是一个单元格。

我假设self.data是一个字典,其中的键是节,值是包含单元格信息的数组。 而不是删除字典的关键。就像你在这里...

self.data.removeValue(forKey: sectionType) 

你可能想要访问该部分并删除该行。事情是这样的......

data[sectionType]?.remove(at: indexPath.row) 

我假设你有方法numberOfRowsInSection:返回值是类似的东西...

return data[sectionType]?.count 

希望这有助于以某种方式。