Swift IndexSet集合
Swift IndexSet集合

Swift IndexSet集合

IndexSet 是 Swift 标准库提供的一组不重复的整数集合,常用于表示列表中被选中的行号、被删除的行号、被移动的行号。

这种类型专门用在 SwiftUI 的 onDelete / onMove 回调里。

基本概念

IndexSet是一组 Int 下标的集合,但带有排序和去重特性。

例如:

let s: IndexSet = [1, 3, 5]

表示列表中的第 1、3、5 项。

使用方法

onDelete和onMove都会返回IndexSet参数:

private func HomeBanksListDelete(offsets:IndexSet) {
    let itemToRemove = offsets.map { allPiggyBank[$0] }
    for item in itemToRemove {
        context.delete(item)
    }
    try? context.save()
}

IndexSet遵守Sequence协议,所以可以:map、forEach、filter、compactMap等方法。

let itemToRemove = offsets.map { allPiggyBank[$0] }

offsets是一个IndexSet,例如[2,4],map会取出2和4,$0对应2和4.

allPiggyBank[$0]则对应下标的元素。

相关文章

1、SwiftUI列表删除onDelete:https://fangjunyu.com/2024/09/27/swift-ui-ondelete%e5%87%bd%e6%95%b0/

2、SwiftUI拖动排序onMove:https://fangjunyu.com/2025/12/05/swiftui%e6%8b%96%e5%8a%a8%e6%8e%92%e5%ba%8fonmove/

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注