Swift中由找不到removeAll(where:)方法引起的连锁反应(上)

本文探讨Swift中关于`removeAll(where:)`方法的问题,特别是在Xcode 9.2 Swift 4.1与Xcode 10+ Swift 4.2之间的差异。在Xcode 9.2中,该方法不可用,而在Xcode 10+中,由于RangeReplaceableCollection协议的扩展,可以免费使用。同时,文章揭示了为何`removeAll(where:)`能正确删除多个元素,以及在Swift 4.1中如何实现类似功能。
摘要由CSDN通过智能技术生成

提示:本篇博文涉及到第三方库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

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大熊猫侯佩

赏点钱让我买杯可乐好吗 ;)

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值