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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了。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)
        }
    }
}

并且最好将sortedonDelete的内容移到您的userData类中。

以上是关于。onDelete在排序的ForEach中不起作用-SwiftUI的主要内容,如果未能解决你的问题,请参考以下文章

数字格式在 Smarty 的 foreach 中不起作用

setTimeout 在 forEach 中不起作用

knockoutjs 点击绑定在嵌套的 foreach 中不起作用

Flutter async/await 在 forEach 中不起作用

Html.ActionLink 在 foreach 循环中不起作用

PHP - 数组未设置在foreach循环中不起作用