我过去一周花了大约13小时/天,但我似乎无法弄明白。我已滚动到网络的末尾,但我似乎无法实现“query.skip”#39;和' query.limit'正确地到我的桌子。
'用户'跟随人,每个人都有很多帖子。我想加载前5个,然后在用户向下滚动表格时加载下一个5。
我们关注的用户共有19篇帖子。
问题:当第一次运行时,一切正常,但是当我滚过第4行时,它应该运行,跳过= 5并且限制= 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"
}
返回两位用户:James&艾米
现在下载他们的帖子:总共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()
}
}
}
成功返回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
}
}
答案 0 :(得分:1)
你不想改变限制,你只想下载下一个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
}
}