iOS Parse PFQueryTableViewController分页问题

时间:2016-10-22 10:23:57

标签: ios objective-c parse-platform pagination pfquery

我在我的项目中使用PFQueryTableViewController,我发现了一个非常令人讨厌的问题。

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

  

object1

     

Object2的

     

object3

     

...

     

object10

     

加载下一页

然后突然另一个用户发了一个帖子" object0",当当前用户完成下一页的加载时,该表看起来像这样:

  

object1

     

Object2的

     

...

     

object10

     

object10

     

object11

     

...

     

对象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个对象,但该表仍然显示在&# 34; object1" to" object10"因为它没有焕然一新。当当前用户正在加载第二页(这不是刷新)时,服务器将跳过前10个对象(" object0"到"对象9"而不是因此,第二页的结果将是"对象10"到对象19"因此,将有两个"对象10"在表中。

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

抱歉我的英语很差,如果你不确定我的意思,请在下面评论,我会进一步解释。

非常感谢。

1 个答案:

答案 0 :(得分:2)

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

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

这有点棘手,如果有人遇到同样的问题,请随时留言,我会详细说明我的方法。 :)