提示:本篇博文涉及到第三方库Eureka,但核心思想在于Swift内部数据处理的推断,不了解Eureka并不影响对本文的理解。Eureka只不过是对UITableView的便捷包装而已,需要进一步了解Eureka的童鞋可以观赏本猫Eureka学习系列博文。
核心代码
section.removeAll {baseRow in
if let habitRow = baseRow as? HabitRow{
let idxPath = habitRow.indexPath!
return willRemoveIdxPaths.contains(idxPath)
}
return false
}
以上代码片段的功能是删除willRemoveIdxPaths队列中对应的所有Rows。Row对应着一个Cell,Cell是Eureka中对UITableViewCell的包装。那么上面实际是将指定的Cells从UITableView中删除。
核心问题
为什么要用removeAll(where:)方法去删除Rows,而不是用遍历删除的方法?比如说如下代码:
for idxPath in willRemoveIdxPaths{
section.remove(at: idxPath.row)
}
原因是&#x