2016-07-29 12 views
0

Ich habe eine Field-Klasse, die einen Zeiger auf seine "Vater" -Klasse hat, die Venue ist, Venue hat eine Location-Spalte, ich möchte eine Abfrage machen, die nur Felder bringt, die innerhalb von 30 Meilen sind.Wie verwende ich relationale Daten in Parse, woWithinMiles funktioniert?

query.whereWithinMiles("venueId.Location", userLocation, 30); 

ich bin sicher, dass der Fehler in venueId.Location ist, aber ich weiß nicht, wie man den Wert meines Zeiger Standort Spalte zu erhalten.

venueId ist der Zeiger. Position ist die Spalte des Zeigers, die ich vergleichen möchte. userLocation ist der aktuelle Standort des Benutzers.

Danke fürs Lesen.

Antwort

2

Punktnotation wird nicht in Abfragen unterstützt, sondern nur in Include. Wenn Sie es tun müssen Sie Ihre Abfrage mit ** schreiben whereMatchesKeyInQuery **

so in Sie es so ähnlich aussehen Fall sollten (die Werte ändern, um Ihre Klassen nach):

ParseQuery query = new ParseQuery.getQuery("ParentClass"); // change the class name 
ParseGeoPoint point = new ParseGeoPoint(40.712784,-74.005941); // put your location here 
query.whereWithinMiles("location",point,30); 

ParseQuery venueQuery = new ParseQuery.getQuery("SubClass"); // change the class name 
venueQuery.whereMatchesKeyInQuery("venueId","objectId",query); 
venueQuery.findInBackground(new FindCallback() { 
    @Override 
    public void done(List objects, ParseException e) { 

    } 

    @Override 
    public void done(Object o, Throwable throwable) { 

    } 
});