Domanda

Sto cercando di analizzare alcuni oggetti dalla mia base di dati.Sto usando Parse.com come servizio Web. Il seguente codice mi restituisce un oggetto basato su 4 query, 2 di loro sono composti.

La variabile "Meial Meeding" deve essere uguale all'incremento o "6" La variabile "riunione" deve essere uguale a "sesso" o "2" La variabile "Isavable" deve essere uguale a sì La variabile "Autore" deve essere diversa da User.UserName

Fondamentalmente sto cercando di implementare una query con 2 o condizioni e 2 e condizioni.

Il seguente codice mi dà un risultato sbagliato, nessuna eccezione o roba del genere, solo un tipo sbagliato di oggetto.Sono sicuro che sia un problema di sintassi, ma non riesco a capire come scrivere correttamente questo ... Se solo usare 1 query composita e quindi aggiungere i 2 e query a che ottengo un risultato giusto, ma poi mi manca 1 filtro..

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) {
}
.

È stato utile?

Soluzione

Nella tua linea ... queryCompound = [PFQuery orQueryWithSubqueries:@[querySex1,querySex2]]; stai creando una nuova query di zecca ignorando tutte le cose di età.

Modifica

Stai complicando questo.

Puoi farlo in questo modo ...

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) {
}
.

Questo catturerà tutte le opzioni che stai cercando.

Anche, come una nota veloce.Scegli i tuoi nomi variabili per renderli più leggibili.Se iniziano tutti con la parola query è difficile distinguerli.Anche renderli descrittivi.queryAge1 e queryAge2 rendono più difficile capire cosa stanno facendo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top