我已经四处冲浪Stackoverflow并发现了类似的问题,但我仍然无法弄清楚,因为我似乎做得对。
所以我有一个自定义单元格的表格视图。每当我尝试删除给定部分中的最后一行时,应用程序都会崩溃并显示以下错误消息:
更新后表视图中包含的节数(1)必须等于更新前表视图中包含的节数(2),加上或减去插入或删除的节数(0插入,0删除)。
这是我的代码:
// shifts = [[Shift]] (Shift is my class)
func numberOfSections(in tableView: UITableView) -> Int {
return shifts.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return shifts[section].count
}
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
// Removing the element from my list
shifts[indexPath.section].remove(at: indexPath.row)
// Removing empty lists if there are any
var indexes = [Int]()
for i in 0..<shifts.count {
if …Run Code Online (Sandbox Code Playgroud) 假设我们有以下代码片段:
Cat cat = new Cat(); // The Cat class extends Animal
ArrayList<Animal> animalList = new ArrayList<>();
animalList.add(cat);
Run Code Online (Sandbox Code Playgroud)
cat是Cat指向类型对象的类型的引用Cat
animalList.get(0)是类型的引用Animal,指向与cat引用相同的对象.
cat == animalList.get(0)将评估,true因为他们都指向同一个对象.
但是,一个引用是类型Cat而另一个是类型Animal(列表中的位置0),所以我错误地说引用不完全相等,即使它们指向相同的内存位置?我是否过多地研究术语?