我在项目中使用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/