.onDelete 在排序 ForEach - SwiftUI 中不起作用



我不知道为什么这不起作用。我一直以同样的方式做,唯一的区别是sorted方法。

ForEach(userData.fruits_and_vegetables.sorted { $0.item < $1.item}) { grocery in
DetailCardView(item: grocery.item, itemCount: grocery.count)
}.onDelete { (offset) in
self.userData.fruits_and_vegetables.remove(atOffsets: offset)
}

帮助!谢谢

你得到一个数组的offset,但试图将其应用于另一个数组......真的不行。

相反,它应该完成,例如

let sorted = userData.fruits_and_vegetables.sorted { $0.item < $1.item}
...
ForEach(sorted) { grocery in
DetailCardView(item: grocery.item, itemCount: grocery.count)
}.onDelete { (offset) in
for i in offset {
if let found = self.userData.fruits_and_vegetables.firstIndex(where: { $0 == sorted[i] }) {
self.userData.fruits_and_vegetables.remove(at: found)
}
}
}

更好地将onDeletesorted和内容转移到您的userData课上。

我有同样的问题。remove函数中,我添加了相同的排序:

func remove(at offsets: IndexSet) {
for index in offsets {
let grocery = userData.fruits_and_vegetables.sorted { $0.item < $1.item }[index]
grocery.delete // Your delete method
}
}

在我的代码中,我还有一个.filter,我也在那里添加了它。一切正常!

最新更新