SwiftUI — Неустранимая ошибка: каждый элемент макета может встречаться только один раз: файл SwiftUI, строка 0

#swiftui

#swiftui

Вопрос:

ХОРОШО, прежде чем помечать это как дубликат, я просмотрел похожие сообщения на StackOverflow и даже на форумах Apple и внедрил все рекомендуемые решения, но проблема сохраняется. Я использую LazyVGrid. Мой код выглядит следующим образом:

Это мой пользовательский вид прокрутки, который позволяет разбивать страницы на страницы, когда пользователь достигает конца прокрутки:

                 if !quickSearchViewModel.isLoading amp;amp; !quickSearchViewModel.search_result.isEmpty {
                    DataFetchingScrollView(.vertical, alignment: .center, onOffsetChange: { (off, height) in
                        offset = off
                        heightMinusOffset = height
                        if heightMinusOffset <= UIScreen.main.bounds.height amp;amp;
                            !quickSearchViewModel.search_result.isEmpty {
                            quickSearchViewModel.paginate_searchterm {
                                print("Paginated")
                            } onError: { (error) in
                                print(error)
                            }
                        }
                    }) {
                        createGrid()
                            .id(UUID())
                    }
 

И это мои две функции для создания сетки и представления внутри сетки:

 private func createGrid() -> some View {
    LazyVGrid(columns: columns) {
        ForEach(quickSearchViewModel.search_result, id: .product_uid) { product in
            createProductItemView(product)
                .id(product.product_uid)
            
        }
    }
}
private func createProductItemView(_ product: ProductModel) -> some View {
    ProductItemView(product: product)
        .id(product.product_uid)
}
 

Да, я знаю, что отправил идентификатор в спам, но я добавил ‘.id’ ко всем представлениям по отдельности, и проблема сохраняется. Как только я нажимаю поиск, содержимое загружается и отображается в сетке, и тогда мое приложение выходит из строя.

Редактировать — product.product_uid это автоматический идентификатор, сгенерированный Firebase. Я буквально использую этот же метод в других представлениях, и некоторые работают без проблем, в других может быть небольшая ошибка.

Комментарии:

1. Я не понимаю, как, поскольку я загружаю в Firebase и каждый раз автоматически генерируется новый идентификатор. Это сделало бы это практически невозможным. Я просмотрю свою базу данных и посмотрю, есть ли два одинаковых идентификатора, хотя я в этом сильно сомневаюсь.

Ответ №1:

Обнаружена эта проблема, это связано с тем, что я использовал orderBy при запросе данных.

Комментарии:

1. что не так с использованием OrderBy ? сейчас я сталкиваюсь с той же проблемой

2. @eugene_prg Я объясняю это тем фактом, что я не использовал OrderBy при первом вызове, однако это также может быть связано с тем, что вы запрашиваете другие поля. Я не могу назвать точную причину, почему.