Question

Je suis en train d'analyser certains objets à partir de ma base de données.Je suis à l'aide d'parse.com en tant que service web.Le code suivant me donne de nouveau un objet basé sur 4 des requêtes, 2 d'entre eux étant composé.

La variable "meetingAge" doit être égal à indexAge OU "6", La variable "meetingSex" doit être égal à "sexe" OU "2" La variable "isAvaiable" doit être égal à OUI La variable "auteur" doit être différente de l'utilisateur.nom d'utilisateur

Fondamentalement, je suis en train de mettre en œuvre une requête avec 2 OU 2 ET conditions.

Le code suivant me donne un mauvais résultat, pas d'exceptions ou des trucs comme ça, juste un mauvais type d'objet.Je suis sûr que c'est un problème de syntaxe, mais je ne peux pas comprendre comment écrire correctement ce..Si je viens d'utiliser 1 composé de requête, puis ajouter les 2 ET requêtes pour que je obtenir un bon résultat, mais ensuite je m'ennuie de 1 filtrer..

PFQuery *queryAge1 = [PFQuery queryWithClassName:@"MeetingObject"];
[queryAge1 whereKey:@"meetingAge" equalTo:indexAge ];
PFQuery *queryAge2 = [PFQuery queryWithClassName:@"MeetingObject"];
[queryAge2 whereKey:@"meetingAge" equalTo:@"6"];
PFQuery *queryCompound = [PFQuery orQueryWithSubqueries:@[queryAge1,queryAge2]];

PFQuery *querySex1 = [PFQuery queryWithClassName:@"MeetingObject"];
[querySex1 whereKey:@"meetingSex" equalTo:user[@"sex"]];
PFQuery *querySex2 = [PFQuery queryWithClassName:@"MeetingObject"];
[querySex2 whereKey:@"meetingSex" equalTo:@"2"];
queryCompound = [PFQuery orQueryWithSubqueries:@[querySex1,querySex2]];

[queryCompound whereKey:@"isAvaiable" equalTo:[NSNumber numberWithBool:YES]];
[queryCompound whereKey:@"author" notEqualTo:user.username];


[queryCompound findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
}
Était-ce utile?

La solution

Dans votre ligne... queryCompound = [PFQuery orQueryWithSubqueries:@[querySex1,querySex2]]; vous êtes à la création d'une marque nouvelle requête en ignorant l'âge.

MODIFIER

Vous êtes de compliquer à l'excès cette.

Vous pouvez le faire de cette façon...

PFQuery *query = [PFQuery queryWithClassName:@"MeetingObject"];
[query whereKey:@"meetingAge" containedIn:@[@"6", indexAge]];
[query whereKey:@"meetingSex" containedIn:@[@"2", user[@"sex"]]];
[query whereKey:@"isAvaiable" equalTo:[NSNumber numberWithBool:YES]];
[query whereKey:@"author" notEqualTo:user.username];

[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
}

Cela permettra d'attraper toutes les options que vous recherchez.

Aussi, tout comme une note rapide.Choisissez vos noms de variable pour les rendre plus lisibles.Si elles commencent toutes par le mot query il est difficile de les distinguer.Également faire leur descriptif. queryAge1 et queryAge2 il est plus difficile de comprendre ce qu'ils font.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top