3

I have an NSArray of PFObjects and want to fetch all data related to the objects in this array in one go, so afterwards there is no need to make a new call to parse. How can I do this?

3 Answers 3

7

My answer is assuming the array you want is contained in a PFObject. You can query for this object and use the include key to include the array contained within that key.

    PFQuery *query = [PFQuery queryWithClassName:@"<object's class name>"];
    [query whereKey:@"objectId" equalTo:object.objectId];
    [query includeKey:@"<array key>"];

If the objects in your array have pointers to other objects within them you can use the dot syntax to fetch everything at once.

   [query includeKey@"<array key>.<pointer in object from array key>"];

Run the query once set up and you should retrieve an array of one object since objectIds are unique, within this object will be the array.

   [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error){
        if(error){
            // handle error
        }else{
            if([objects count] > 0){

                PFObject *object = objects[0]; // Only one matching object to query
                NSArray *array = object[@"<array key>"]; // Array you want
            }
        }
    }];
Sign up to request clarification or add additional context in comments.

Comments

1

You can use PFObject's methods family:

+(void)fetchAll:(NSArray*)objects

Check out PFObject documentation on those methods https://parse.com/docs/ios/api/Classes/PFObject.html#//api/name/fetchAll:

Comments

0

As far I got your query , this might be-

 PFQuery *query = [PFQuery queryWithClassName:@"CLASS_NAME"];

[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error)
 {
     if (!error && objects.count != 0)
     {
         NSLog(@"Successfully retrieved: %@", objects);

         for(int i=0; i< objects.count; i--)
         {
             NSDictionary *dict = [objects objectAtIndex:i];
             self.label = [dict objectForKey:@"PROPERTY_KEY"]; //Just example

 /* Also modify this code as per you want to fetch properties of some or all */
 /* Do as you want to with properties and also change key as per need of column/property you want */
         }
     }
 }];

This way you will get array and also fetch fetch as you want.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.