ios - iOS Parse PFQueryTableViewController分页问题

标签 ios objective-c parse-platform pagination pfquery

我在项目中使用PFQueryTableViewController,但发现一个很烦人的问题。

我正在使用分页,但一切正常,但是当当前用户刚刚完成表的加载/刷新(未加载下一页)时,突然另一个用户发布了一个帖子(我们称之为object0),然后分页将无法按预期工作。例如,我在Parse服务器上有100个对象,并且objectsPerPage设置为10。这是当前用户加载表后的表:

对象1

对象2

对象3

...

对象10

载入下一页

然后,另一个用户突然发布了一个帖子“object0”,当当前用户完成下一页的加载时,该表如下所示:

对象1

对象2

...

对象10

对象10

对象11

...

对象19

载入下一页

这给了我两个“object10”。这是完全合理的,因为这就是Parse对loadNextPage的逻辑:

query.limit = self.objectsPerPage; //retrieve 10 objects per query
query.skip = page * self.objectsPerPage; //skip 10*current_page objects per query 

如您所见,当另一个用户发表帖子时(我们称其为“object0”),服务器上将有101个对象,但是该表仍从“object1”显示为“object10”,因为它没有刷新。当当前用户正在加载第二页时(这不会刷新),服务器将跳过前10个对象(“object0”到“object 9”,而不是1到10),因此第二页的结果将是“对象10”到“对象19”,因此表中将有两个“对象10”。

有没有办法消除这个问题?

对不起,我的英语不好,如果您不确定我要说的是什么,请在下面评论,我将进一步解释。

非常感谢。

最佳答案

我设法自己解决了。这是方法:

  • 创建一个名为lastObject的新属性,这是查询返回的最后一个对象。
  • 查询完成执行且没有错误时,请更新lastObject
  • 创建一个新查询,查询self.parseClassName,然后枚举结果,如果lastObject的objectId等于结果中的objectId,则设置query.skip = (index + 1)*page。其中index是结果数组中与lastObject匹配的对象的索引。
  • 之后,每次我们调用loadNextPage时,查询应在lastObject之后立即返回下一个10个对象。

  • 这有点棘手,如果有人面临相同的问题,请随时发送消息,我将详细介绍我的方法。 :)

    关于ios - iOS Parse PFQueryTableViewController分页问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40191013/

    相关文章:

    ios - Xcode:为什么我的启动参数在记录 UI 测试时不起作用?

    ios - UIBarButtonItem backButtonBackgroundImage : gets stretched

    ios - UIDatepicker设置最小分钟

    iphone - 如何在 iphone 标签上显示两种颜色的百分比变化

    iphone - `UITableViewCellAccessoryCheckmark` 是图像吗?

    android - 如何隐藏我的 Parse.com API key ?

    swift - 对使用 Parse.com 的 Swift 应用程序进行单元测试

    swift - PFLoginViewController 出现

    ios - swift 中查看 Controller 的依赖注入(inject)建议

    ios - 创建 App ID,Bundle Identifier