У меня есть вид модели, который имеет функцию извлечения контактов:
class ContactsStore: ObservableObject {
@Published var contacts = [CNContact]()
func fetch() {} ...
А затем в моем представлении:
@EnvironmentObject var store: ContactsStore
var groupedContacts: [String: [CNContact]] {
.init (
grouping: store.contacts,
by: {$0.nameFirstLetter}
)
}
...
List() {
ForEach(self.groupedContacts.keys.sorted(), id: \.self) { key in ...
Я сократил свой код для удобства, добавлю / редактировать при необходимости. Проблема, с которой я столкнулся - каждый раз, когда мое представление отображается, вызывается функция fetch
, и мой массив дублируется в моем представлении. TIA для справки
UPD: Дублирование происходит из-за вызова метода fetch
в Списке .onAppear
. Поэтому я смотрю, как вызывать этот метод только один раз, а не каждый раз, когда появляется представление.