IOS Parse query.
-
21-12-2019 - |
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) {
}
. 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.