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/
