.onDelete не работает в отсортированном ForEach - SwiftUI - PullRequest
0 голосов
/ 02 апреля 2020

Понятия не имею, почему это не работает. Я всегда делал это одинаково, единственное отличие - метод 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)
}

Помогите! Спасибо

1 Ответ

0 голосов
/ 02 апреля 2020

Вы получаете 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)
        }
    }
}

и лучше переместите sorted и содержимое onDelete в класс userData.

...