我在我的项目中使用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"在表中。
有没有办法消除这个问题?
抱歉我的英语很差,如果你不确定我的意思,请在下面评论,我会进一步解释。
非常感谢。
答案 0 :(得分:2)
我设法自己解决了。这是方法:
lastObject
的新属性,该属性是查询返回的最后一个对象。self.parseClassName
。lastObject
,然后枚举结果,如果query.skip = (index + 1)*page
的objectId等于结果中的objectId,则设置{{1} }。其中index
是结果数组中与lastObject
匹配的对象的索引。loadNextPage
时,查询都应该在lastObject
之后立即返回下一个10个对象。这有点棘手,如果有人遇到同样的问题,请随时留言,我会详细说明我的方法。 :)