#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 при первом вызове, однако это также может быть связано с тем, что вы запрашиваете другие поля. Я не могу назвать точную причину, почему.