UITableView Prefetching Example


Property

/// 검색된 콘텐츠
var foundContents = [Any]()
/// 불러올 페이지 & 데이터 개수
var pageToFetch = 0
var count = 10

UITableViewDataSourcePrefetching

func tableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [IndexPath]) {
	/// 패치할 페이지가 0일 경우 패치할 데이터가 없거나 기타 이유로 패치할 수 없는 상황이기 때문에 Prefetching 하지 않는다.
	guard pageToFetch != 0 else { return }
        indexPaths.forEach {
		/// ex) 한 번에 불러오는 양으로 나눴을 때의 넘버가 다음 패치할 페이지의 넘버와 같으면 프리패치 진행
		/// 다음 페이지 넘버는 1부터 시작하기 때문에 row에 +1을 해준다.
		if ($0.row + 1 / self.count) == pageToFetch {
			fetchData(pageToFetch)
		}
	}
}