PFUser查询花费时间从Parse获取用户

时间:2015-03-10 02:11:53

标签: ios swift parse-platform

这是我的viewDidLoad方法 -

var query = PFUser.query()
    query.findObjectsInBackgroundWithBlock({ ( objects : [AnyObject]! , error: NSError! ) -> Void in

        //self.users.removeAll(keepCapacity: true)
        for object in objects {
            var user:PFUser = object as PFUser
            println(user.username)
            self.users.append(user.username)
        }
        self.tableView.reloadData()
    })
    println( " Count   \(users.count) ")

在用户的用户名之前打印用户数,这使我相信从数据库中获取用户需要时间。因此我的tableView永远不会更新,代码看起来像这样 -

var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell

cell.textLabel?.text = users[indexPath.row]
    return cell

给我一​​个'数组索引超出范围错误',因为当我的字典为空时,我的表中的行数为3。

在swift上找不到任何特定的解决方案。有什么建议吗?

编辑:忘记提及用户确实打印了很长时间(甚至在用户名之后打印的用户数量之后)

仅供参考,计数始终打印为1。

输出是这样的 -     数1 genaks genaks1427 genaks14271 ADU AFD

3 个答案:

答案 0 :(得分:2)

我将viewDidLoad函数中的代码移动到viewDidAppear函数,它的工作方式与我希望它的工作方式相同:)

答案 1 :(得分:1)

如果可以,请在findObjectsInBackgroundWithBlock方法中执行cellForRowAtIndexPath查询。查看本教程:https://www.youtube.com/watch?v=Q6qcrO8uNzU他在视频中也这样做。

答案 2 :(得分:0)

当你说“我的表中的行数为3”时,你推断出numberOfRowsInSection你返回了3.

如果我是对的,我相信这就是问题。

你必须这样做

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return users.count
}

这样,numberOfRowsInSection永远不会与预期的数量不同。