7

I encounter some strange problem when I try to query all users from the "User" class It dos not find any Users

var query:PFQuery=PFQuery(className: "User");
    query.findObjectsInBackgroundWithBlock {
        (objects: [AnyObject]!, error: NSError!) -> Void in
        if !(error != nil) {
            for(var i=0;i<objects.count;i++){
                var object=objects[i] as PFObject;
                var name = object.objectForKey("username") as String;
                println(name);

            }
        }
    }

I tried replacing

 var query:PFQuery=PFQuery(className: "User");

with

var query:PFQuery=PFQuery(className: "AnotherClass");

and everything worked like i should. I think it must be something special about the "User" class

tim_yng
  • 2,591
  • 4
  • 18
  • 20

4 Answers4

25

User isn't the appropriate name for the User table. You need to use the following:

var query : PFQuery = PFQuery(className: "_User")

A more appropriate method is:

var query : PFQuery = PFUser.query()
Dehli
  • 5,950
  • 5
  • 29
  • 44
  • 2
    It seams better to use PFUser.query() rather than the string "_User" as it may change in the future, but the SDK will always return the correct query for user. – foOg Feb 24 '15 at 18:12
  • Thanks. I agree with you. I updated my answer. @foOg – Dehli Feb 24 '15 at 18:21
6

You cannot query users like that. Instead you need:

var findUsers:PFQuery = PFUser.query();
findUsers.whereKey("username",  equalTo: searchText.text)

See Parse documentation:

https://parse.com/docs/ios_guide#users-querying/iOS

Tys
  • 3,592
  • 9
  • 49
  • 71
0

I've been stuck on this part of code too. I was able to query users and their data with this code:

    var usernames = [String]()
    var userImages = [Data]()

    var query : PFQuery = PFUser.query()!
                    // Interested in locations near user.
                    query.whereKey("location", nearGeoPoint: geopoint!)
                    // Limit what could be a lot of points.
                    query.limit = 10
                    do {
                        let queryObjects = try query.findObjects()
                        for object in queryObjects {
                            self.usernames.append(object["username"] as! String)
                            self.userImages.append(object["image"] as! Data)
                        }
                    } catch {
                        print("Error")
                    }
marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
-1

try this ...

 var ObjectIDQuery = PFQuery (className: "User")
    ObjectIDQuery.findObjectsInBackgroundWithBlock({
        (objectsArray : [AnyObject]?, error: NSError?) -> Void in



        var objectIDs = objectsArray as! [PFObject]

        NSLog("\(objectIDs)")

        for i in 0...objectIDs.count-1{
            self.NameArray.append(objectIDs[i].valueForKey("username")as!  String)


            self.iDArry.append(objectIDs[i].valueForKey("objectId") as!  String)

            self.tableView.reloadData()
DiAb Syr
  • 1
  • 1