我正在编写包含大量数据的JSON
数据。有时几千条记录。
我想使用分页来显示,例如,每页显示20条记录。 当用户向下滚动时,我想添加下20条记录。
我发送当前页面(www.exampleRequest /& pageCounter = 1)并接收 足够的记录
pageCouter = 1 => 1 * 20 = 0到20条记录
pageCouter = 2 => 2 * 20 = 21到40条记录
但我的问题是 iOS-swift UITableView
如何知道何时获得下一页结果?
答案 0 :(得分:1)
var pageIndex = 1
var dataSource = [DataSourceModel]()
func getDataSource() {
let parameters: Parameters = [
"page": pageIndex
]
Alamofire.request("Your URL", method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: nil).responseJSON { (response:DataResponse<Any>) in
switch(response.result) {
case .success(_):
if let data = response.result.value{
let json = JSON(data)
self.procssGetResponce(json: json)
print("response: \(json)")
}
break
case .failure(_):
print(response.result.error!)
break
}
}
}
func procssGetResponce(json: JSON) {
//Append Elements in your object
//dataSource.append(ELEMENTS)
tblDataSource.reloadData()
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return dataSource.count + 1
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if indexPath.row == dataSource.count {
let cell = tableView.dequeueReusableCell(withIdentifier: "LoadCell") as! LoadMoreCell
cell.loadProcess.startAnimating()
return cell
} else {
let cell = tblDataSource.dequeueReusableCell(withIdentifier: "cellId") as! PageListCell
cell.dataSource = dataSource[indexPath.row]
cell.setDataSource()
return cell
}
}
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
if indexPath.row == dataSource.count {
pageIndex = pageIndex + 1
getDataSource()
}
}
答案 1 :(得分:0)
您可以使用当前的数据计数,并在查询中包含提取计数。
var initialItems: Int = 0 //Intial Load Item
var currentItems: Int! //Current Items
使用NSMutableArray
添加您的数据并检查以前数据中是否有可用的对象。
//If previous load data don't contain the same data, update the array of loaddata.
for object in json {
if !loadeddata.containsObject(object){
loadeddata.insertObject(object, atIndex: 0)
}
}