假设我有以下状态项,并且我想使用onDelete删除嵌套数据数组中的该项。我可以手动输入索引
.onDelete { indexSet in
items**[1]**.data.remove(atOffsets: indexSet) }
它适用于那个特定的数组,但是我应该用什么来代替硬连接索引[1]。有没有更好的办法?
struct Item: Codable, Identifiable, Hashable {
var id: Int
var data: [Datr]
}
struct Datr: Codable, Identifiable, Hashable {
var id: Int
var number: String
enum CodingKeys: String, CodingKey {
case id
case number = "number"
}
}
struct ContentView: View {
@State fileprivate var items = [
Item(id: 1, data: [Datr(id: 1, number: "one"), Datr(id: 2, number: "two")]),
Item(id: 2, data: [Datr(id: 1, number: "three"), Datr(id: 2, number: "four")])
]
var body: some View {
List {
ForEach(items) {
item in
ForEach(item.data) { item2 in
Text(item2.number)
}
}.onDelete { indexSet in
items[1].data.remove(atOffsets: indexSet)
}
}
}
}
Thanks:)
我想也许有办法从indexSet中获取索引,但找不到任何东西?
1条答案
按热度按时间3phpmpom1#
@loremipsum发布了你可以循环通过IndexSet作为数组并获取项目的索引。因此,在删除嵌套在数组中的项的情况下,可以使用以下命令: