我不知道为什么这不起作用。我一直以同样的方式做,唯一的区别是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)
}
}
}
更好地将onDelete
sorted
和内容转移到您的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
,我也在那里添加了它。一切正常!