Swift 3使用表视图显示解析对象 - 如何限制显示的对象数

时间:2017-02-10 02:42:29

标签: swift uitableview parse-platform pull-to-refresh

Swift 3 - Xcode 8 我使用表视图下载&显示className中的所有对象:"任务"。但是,当用户到达表格视图的底部时,如何将对象数限制为25并且仅加载25个?

用户如何下拉刷新以获取最新的任务?我提前谢谢你了!!!

   let query = PFQuery(className: "Task")
    query.whereKey("userId", equalTo: (PFUser.current()?.objectId!)!)

    query.findObjectsInBackground(block: { (objects, error) in

        if let posts = objects{
            for object in posts {
                if let post = object as? PFObject {

                    self.taskType.append(post["type"] as! String)
                    self.taskTitle.append(post["title"] as! String)
                    self.taskDescription.append(post["description"] as! String)
                    self.taskPostal.append(post["postal"] as! String)
                    self.taskRegion.append(post["region"] as! String)
                    self.taskAmount.append(post["amount"] as! String)
                    self.taskAmountType.append(post["amountType"] as! String)

                    self.taskId.append(object.objectId!)



                    self.tableView.reloadData()
                }

            }
        }

    })

2 个答案:

答案 0 :(得分:0)

我建议您使用Dwifft这非常简单,并且会使用整洁的动画自动更新您的行,而且不会出现问题。

将Dwifft + UIKit.swift和Dwifft.swift文件添加到您的项目中。配置你的UITableViewController类似于DwifftExample。您必须获取您的数据源,在您的情况下,可能是taskTitle数组属性(在selfset中使用self.diffCalculator?.rows = taskTitle)。使用此属性可返回numberOfrowsInSection委托方法中的计数,如示例所示。

在您的查询内部迭代您的对象并将其附加到属性'数组首先将它们添加到本地数组,然后在for循环外添加到带有+ =的属性。

使用Parse的 query.limit = 25 query.skip 进行分页时。然后在tableView委托方法willDisplayCell检查indexPath.row == taskTitle.count - 1然后再执行另一个查询,保持跟踪 .skip 值。

使用UIRefreshControl()实现pull刷新并记住使用.removeAll(keepCapacity:Bool)清理属性数组也清除.skip值

您不必使用.reloadData()以及Dwifft,因为它会自动执行您的单元格更新。

答案 1 :(得分:0)

你可以使用限制和跳过,如下所示

让query = PFQuery(className:“Task”) query.whereKey(“userId”,equalTo:(PFUser.current()?. objectId!)!)

query.limit = 50

query.skip = 0 //跳过0条记录,然后下次执行此功能,然后设置skip = 50,然后跳过50条记录。

query.findObjectsInBackground(block:{(objects,error)in