如何使用Query.limit和Query.skip?
how to use Query.limit and Query.skip?
过去一周我每天花费大约 13 小时,但我似乎无法弄清楚。我已经滚动到网页的末尾,但我似乎无法正确地将 'query.skip' 和 'query.limit' 实现到我的 table。
'user'正在关注人,每个人都有很多帖子。我想加载前 5 个,然后在用户向下滚动 table.
时加载下 5 个
我一共关注了 19 个用户的帖子。
问题: 当这是第一次 运行 时,一切正常,但当我滚动到第 4 行时,它应该 运行,跳过= 5 和 limit = 10,依此类推。但是当它 运行 是 'loadFollowersImages()' 函数时,它开始加载 15, 个对象,然后是 30、46...一切重复并加倍。
我做错了什么?为什么它不跳到极限并在新极限上加 5。
我的 viewDidLoad:
override func viewDidAppear(animated: Bool) {
if resultsHasNameArray.count == 0 {
// to start download 5 posts
skip = resultsHasNameArray.count
limit = resultsHasNameArray.count + 5
getFollowingData() {
}
}
获取用户关注的人员列表:在本例中是两个用户
func getFollowingData() {
var followQuery = PFQuery(className: "follow")
followQuery.whereKey("user", equalTo: PFUser.currentUser()!.username!)
var objects = followQuery.findObjects()
for object in objects! {
self.followArray.append(object.objectForKey("userToFollow") as! String) // stores all the usernames Current user is following
}
loadFollowersImages() // once we know who we are following, start to download their "posts"
}
returns 两个用户:James 和 Amy
现在下载他们的帖子:共19个
首先下载 5 个帖子。
func loadFollowersImages(){
var photoQuery = PFQuery(className: "PostPhoto")
photoQuery.skip = skip! // oringally to 0
photoQuery.limit = limit! // oringally to 5
photoQuery.whereKey("username", containedIn: followArray)
photoQuery.addDescendingOrder("createdAt")
photoQuery.findObjectsInBackgroundWithBlock {
(objects:[AnyObject]?, error: NSError?) -> Void in
if error == nil {
for object in objects!{
self.resultsHasNameArray.append(object.objectForKey("username") as! String)
self.resultsHasUserImageFile.append(object.objectForKey("userImageFile") as! PFFile)
self.resultsTable.reloadData()
}
}
}
returns 5 个帖子成功。
现在,当用户向下滚动到第 5 行时,它应该 运行 上述 (loadFollowersImages()) 方法并添加 5 以跳过和 5 以限制(分别为 5、10)。
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
if indexPath.row == limit! - 1{ // when scrolling down, if our limit meets index path run
skip = skip! + 5 // adds '5' to skip
limit = limit! + 5 // adds '5' to limit
loadFollowersImages() // runs above method
}
}
您不想更改限制,您只想下载下 5 个,因此在所有交互期间限制仍然是 5,您唯一应该更改的数字是要跳过的行数,但是这会需要在 if 条件中进行调整,因为现在您希望在显示的行等于限制加上已跳过的行数时 运行 loadFollowersImages
函数,如下所示:
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
if indexPath.row == limit! + skip! - 1{
// when scrolling down, if our limit + rows skiped meets index path run
skip = skip! + 5 // adds '5' to skip and limit is constante
loadFollowersImages() // runs above method
}
}
过去一周我每天花费大约 13 小时,但我似乎无法弄清楚。我已经滚动到网页的末尾,但我似乎无法正确地将 'query.skip' 和 'query.limit' 实现到我的 table。
'user'正在关注人,每个人都有很多帖子。我想加载前 5 个,然后在用户向下滚动 table.
时加载下 5 个我一共关注了 19 个用户的帖子。
问题: 当这是第一次 运行 时,一切正常,但当我滚动到第 4 行时,它应该 运行,跳过= 5 和 limit = 10,依此类推。但是当它 运行 是 'loadFollowersImages()' 函数时,它开始加载 15, 个对象,然后是 30、46...一切重复并加倍。
我做错了什么?为什么它不跳到极限并在新极限上加 5。
我的 viewDidLoad:
override func viewDidAppear(animated: Bool) {
if resultsHasNameArray.count == 0 {
// to start download 5 posts
skip = resultsHasNameArray.count
limit = resultsHasNameArray.count + 5
getFollowingData() {
}
}
获取用户关注的人员列表:在本例中是两个用户
func getFollowingData() {
var followQuery = PFQuery(className: "follow")
followQuery.whereKey("user", equalTo: PFUser.currentUser()!.username!)
var objects = followQuery.findObjects()
for object in objects! {
self.followArray.append(object.objectForKey("userToFollow") as! String) // stores all the usernames Current user is following
}
loadFollowersImages() // once we know who we are following, start to download their "posts"
}
returns 两个用户:James 和 Amy
现在下载他们的帖子:共19个 首先下载 5 个帖子。
func loadFollowersImages(){
var photoQuery = PFQuery(className: "PostPhoto")
photoQuery.skip = skip! // oringally to 0
photoQuery.limit = limit! // oringally to 5
photoQuery.whereKey("username", containedIn: followArray)
photoQuery.addDescendingOrder("createdAt")
photoQuery.findObjectsInBackgroundWithBlock {
(objects:[AnyObject]?, error: NSError?) -> Void in
if error == nil {
for object in objects!{
self.resultsHasNameArray.append(object.objectForKey("username") as! String)
self.resultsHasUserImageFile.append(object.objectForKey("userImageFile") as! PFFile)
self.resultsTable.reloadData()
}
}
}
returns 5 个帖子成功。
现在,当用户向下滚动到第 5 行时,它应该 运行 上述 (loadFollowersImages()) 方法并添加 5 以跳过和 5 以限制(分别为 5、10)。
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
if indexPath.row == limit! - 1{ // when scrolling down, if our limit meets index path run
skip = skip! + 5 // adds '5' to skip
limit = limit! + 5 // adds '5' to limit
loadFollowersImages() // runs above method
}
}
您不想更改限制,您只想下载下 5 个,因此在所有交互期间限制仍然是 5,您唯一应该更改的数字是要跳过的行数,但是这会需要在 if 条件中进行调整,因为现在您希望在显示的行等于限制加上已跳过的行数时 运行 loadFollowersImages
函数,如下所示:
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
if indexPath.row == limit! + skip! - 1{
// when scrolling down, if our limit + rows skiped meets index path run
skip = skip! + 5 // adds '5' to skip and limit is constante
loadFollowersImages() // runs above method
}
}