Ответ
Пагинация — это метод разбиения большого набора данных на отдельные страницы (части) для их последовательной загрузки и отображения.
Зачем это нужно?
- Оптимизация производительности: Загрузка всех данных сразу потребляет много памяти и времени.
- Улучшение UX: Пользователь видит первую часть контента мгновенно, а остальное подгружается по мере необходимости (например, при скролле).
- Снижение нагрузки на сервер и сеть: Передаются только запрошенные порции данных.
Типичная реализация на iOS (UICollectionView/UITableView):
class ViewController: UIViewController {
var data: [Item] = []
var currentPage = 1
var isLoading = false
var isLastPage = false
func loadNextPage() {
guard !isLoading && !isLastPage else { return }
isLoading = true
// Показать индикатор загрузки
NetworkService.fetchPage(currentPage) { [weak self] result in
guard let self = self else { return }
self.isLoading = false
// Скрыть индикатор загрузки
switch result {
case .success(let newItems):
if newItems.isEmpty {
self.isLastPage = true
} else {
self.data.append(contentsOf: newItems)
self.currentPage += 1
self.tableView.reloadData()
}
case .failure(let error):
// Обработать ошибку
print(error)
}
}
}
}
// Триггер подгрузки при достижении конца списка
extension ViewController: UITableViewDelegate {
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
if indexPath.row == data.count - 1 {
loadNextPage()
}
}
}
Ключевые состояния для обработки: loading, error, last page reached. На сервере пагинация часто реализуется через параметры запроса ?page=1&limit=20 или курсоры (cursor).