2016-03-30 4 views
1

Ich habe eine Klasse, die eine Objekttyp Spalte, z.Vergleichen Wörterbuchobjekt mit einem Array in Parse.com - iOS

  COLUMN 1 
Row 1 : {"gender":"male","name":"A"} 
Row 2 : {"gender":"female","name":"B"} 
Row 3 : {"gender":"male","name":"C"} 

Ich brauche die Zeilen, deren Objekte für Schlüssel name, in COLUMN1 zu bekommen, den Inhalt meiner Array entspricht ["A","B"]

So im Mai Fall Abfrage sollte ROW 1 und ROW 2 zurückzukehren

ich weiß, dass diese Methode aber sein, um mit einer string Spalt in Parse Vergleich Array, soweit ich weiß: [query whereKey:@"name" containsAllObjectsInArray:selectedParticipants];

wie mein Array mit einer Diktion vergleichen Säule?

+0

Warum erstellen Sie nicht einfach ein Array mit den Werten aus dem Wörterbuch und setzen dieses Array in die Abfrage? Ich weiß, dass Swift funktioniert, selbst wenn Sie dies tun, wird es nicht eine tatsächliche Kopie, sondern einen Zeiger darauf "erstellen", so dass es sehr schnell ist, selbst mit 10 Tausend Zeilen ... –

Antwort

1

Einer der Nachteile des Objekttyps in einer parse.com-Auflistung besteht darin, dass er nur für eine exakte Übereinstimmung abgefragt werden kann. Die einzige Möglichkeit, dies unter Ihrem aktuellen Modell zu tun, besteht darin, die Abfrage mit den anderen Spalten zu qualifizieren, um die kleinste Menge zurückzugewinnen, die für das Objektkriterium übereinstimmen könnte, und dann das Objekt auf der Clientseite abzugleichen.

Wenn die Sammlung eine Menge von Dokumenten hat, und Sie wollen, dass diese schnell laufen, die bessere Wahl ist das Datenmodell anpassen, so dass die Abfrage-able Eigenschaften in den eingebetteten Objekten ihre eigenen Spalten sind ...

 name (string) gender (string) otherStuff (object) 
row0 "A"   "male"   { /* stuff we don't query on */ } 
row1 "B"   "female"  { ... } 
... 

Damit würden Sie [query whereKey:@"name" containedIn:@[@"A", @"B"]] verwenden, um die Abfrage zu qualifizieren. Beachten Sie, dass dies nicht enthält enthält allObjectsInArray, wie eine Array-Eigenschaft zu testen ist.

+0

Danke. Ich hatte diese Idee. und du hast es bestätigt. – hyd00

Verwandte Themen