【问题标题】:Swift 3 Using a Table view to display Parse objects- How to limit the number of objects displayedSwift 3 Using a Table view to display Parse objects-如何限制显示的对象数量
【发布时间】:2017-06-28 06:48:49
【问题描述】:

Swift 3 - Xcode 8 我正在使用表格视图来下载和显示 className 中的所有对象:“Task”。但是,当用户到达表格视图的底部时,如何将对象的数量限制为 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()
                }

            }
        }

    })

【问题讨论】:

  • FWIW 您所描述的技术(一次 25 个项目)称为分页。网上有几个使用 iOS 的教程可能会对您有所帮助。

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


【解决方案1】:

我会向您推荐Dwifft,它非常简单,可以使用简洁的动画自动更新您的行,并且不会卡顿。

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

在遍历对象并将它们附加到属性数组时,在查询内部首先将它们添加到本地数组,然后在 for 循环外部使用 += 添加到属性。

当涉及到分页时,请使用 Parse 的 query.limit = 25 和 query.skip。然后在 tableView 委托方法 willDisplayCell 检查 indexPath.row == taskTitle.count - 1 然后执行另一个查询来跟踪 .skip 值。

使用 UIRefreshControl() 实现拉取刷新,并记得使用 .removeAll(keepCapacity: Bool) 清理属性数组,同时清理 .skip 值

您不必将 .reloadData() 与 Dwift 一起使用,因为它会自动更新您的单元格。

【讨论】:

    【解决方案2】:

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

    让查询 = 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

    【讨论】:

      猜你喜欢
      • 2012-10-30
      • 2019-11-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-01
      • 2022-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多