Ios 斯威夫特2。使用Parse,我可以';t将PFUser.query()的结果保存在用户名数组中

Ios 斯威夫特2。使用Parse,我可以';t将PFUser.query()的结果保存在用户名数组中,ios,swift,parse-platform,Ios,Swift,Parse Platform,我试图保存一个查询的结果,但当我试图将其保存在数组中时,它就是不这样做。 这是我的密码: let query = PFUser.query() query?.orderByDescending("puntaje") query?.limit = 50 query?.findObjectsInBackgroundWithBlock({ (users, error) -> Void in if let objects = users {

我试图保存一个查询的结果,但当我试图将其保存在数组中时,它就是不这样做。 这是我的密码:

let query = PFUser.query()
    query?.orderByDescending("puntaje")
    query?.limit = 50
    query?.findObjectsInBackgroundWithBlock({
        (users, error) -> Void in
        if let objects = users {

            for object in objects {
                self.usernames.removeAll(keepCapacity: true)
                self.scores.removeAll(keepCapacity: true)

                if let user = object as? PFUser {
                    print(user.username)

                    self.usernames.append(user.username!)
                    self.scores.append((user["puntaje"] as? Int)!)
                }
            }
        }

        print(self.usernames.count)


    })
打印user.username时,将显示所有用户名

在打印中显示我有0个用户名。

你需要移动

self.usernames.removeAll(keepCapacity: true)
self.scores.removeAll(keepCapacity: true)
在“for”循环上方。就在下面

if let objects = users {
我找到了另一种方法。 我用过:


当打印(self.usernames.count)时,输出是什么?复制粘贴了您的代码并进行了上面提到的修改,得到了正确的结果。
let query = PFUser.query()
    query?.orderByDescending("puntaje")
    query?.limit = 50

    do {
        if let users = try query?.findObjects() {
            for user in users as! [PFUser] {
                let name = user.username!
                self.usernames.append(name)
                self.scores.append((user["puntaje"] as? Int)!)
            }
        }

    }catch {
        print(error)
    }