2015-09-16 1 views
0

Je suis nouveau à l'aide de l'analyse, et en ajoutant actuellement l'analyse à une application qui utilise les services Web SOAP pour les remplacer.Parse.com combiner requête imbriquée

Maintenant, je viens un peu coincé, car en raison de l'avoir fait en MySQL et PHP, je suis en train de traduire la logique à partir des tables et du code pour analyser. J'ai une fonction que j'ai écrite et il réalise exactement ce que je suis après, mais je pense juste que c'est faux et peut être mieux fait, pour commencer, je n'appelle pas findObjectsInBackground, dont je sais que j'ai besoin.

J'essaie de prendre ce résultat, puis de recharger une tableView.

NSMutableArray *activityfeed = [NSMutableArray new]; 
//get current user 
PFUser *user = [PFUser currentUser]; 

if (user != nil) { 
    PFQuery *query = [PFQuery queryWithClassName:@"Event"]; 
    //get event that user is involved in 
    [query whereKey:@"invited" equalTo:user]; 

    //get the events 
    NSArray *events = [query findObjects]; 


    //loop over the events 
    for (PFObject *event in events) { 

     //owner is a pointer to the users class 
     PFUser *owner = event[@"owner"]; 
     if (![user.objectId isEqualToString:owner.objectId]) { 
      //ignore the info for the logged in user for now 

      //invited is a relation so one event has many users 
      PFRelation *relation = [event relationForKey:@"invited"]; 
      PFQuery *query = [relation query]; 
      [query orderByDescending:@"dateinvited"]; 
      [query addDescendingOrder:@"dateaccepted"]; 

      //get the friends that are involved with the event 
      NSArray *friends = [query findObjects]; 

      for (PFUser *friend in friends) {//Perform logic checks here and then add to activityfeed} 


     } 

    } 
} 

return activityfeed; 

Alors ma logique passe au-dessus de l'utilisateur actuel, puis obtenir tous les événements utilisateur est impliqué, puis obtenir toutes les autres personnes impliquées dans cet événement et travailler ce que pour afficher.

Existe-t-il un moyen plus efficace de faire ce qui précède?

Répondre

0

Habituellement, nous utilisons whereKey:matchesQuery dans des cas comme celui-ci. Faites des recherches à ce sujet.

This question peut vous aider à trouver une solution.