如何使用swift

时间:2017-01-04 13:25:50

标签: arrays swift parse-platform cloud

好吧,所以我开始在这里开始头疼...一旦我的用户登录我的应用程序,我创建一个名为PFUser.Current()?.objectId!的解析新类我在这个类中存储所有用户信息,用户可以从任何设备访问它,因为他的用户ID永远不会改变。我在用户类中存储的一个东西是一个数组,它引出了我的问题:我希望能够访问这个数组,但是这样做的唯一方法是使用:

var query = PFQuery(className: "\(PFUser.current()?.objectId!)") // Calling the user class
    query.getObjectInBackground(withId: "") { (object: PFObject?, error: Error?) in

        if error != nil {
            print(error)

        } else {

            print(object)
        }
    }

问题是我不知道如何从UserObjectID类中检索objectID。

我发现了一些代码,可以让我检索用户列表并将用户名和iD附加到数组中:

var query = PFUser.query()

    query?.findObjectsInBackground { (objects, error) in

        if let users = objects {

            for object in users {

                if let user = object as? PFUser {

                self.usernames.append(user.username!)
                self.userids.append(user.objectId!)

                }
            }
        }   
    }

如何进行类似的搜索,并在我的个人userClass中找到所有的objectID而不是superUser类?

1 个答案:

答案 0 :(得分:0)

您确定要为每个用户创建一个新类吗?你最终会得到大量的桌子,每个桌子各占一排。最好将数组作为当前_User表中的列添加,或者创建一个新表并使用指针保存其中的所有用户数组。

如果这样做,并且您的新表是从用户的objectId命名的,那么您应该能够使用以下命令查询该类:

var userId: String = ""

let userClassName = PFUser.current()!.objectId!

let query = PFQuery(className: userClassName)
// as there is only 1 row get the first
query.getFirstObjectInBackground { (object, error) in
    if error != nil || object == nil {
        print("nothing here try again")
    } else {
        userId = object?.objectId
    }
}

如果您有一个包含许多用户和指针的表,请使用以下行作为指南

let userObjectId =  PFUser.current()!.objectId!
query.whereKey("yourPointerName", equalTo: PFObject(outDataWithClassName: "theClassYouWantToQuery", objectId: userObjectId))