2016-07-29 6 views
1

Ich versuche, alle Benutzer innerhalb einer bestimmten Entfernung des PFGeopoint des aktuellen Benutzers zu finden. Die Abfrage-Objekten zurückgibt bei der Verwendung von:innerhalbMiles funktioniert nicht mit Parse PFGeopoint Abfrage in Swift

Abfrage .whereKey ("addressPoint", nearGeoPoint: userGeopoint)

aber es gibt keine Objekte bei der Verwendung von:

Abfrage .whereKey ("addressPoint", nearGeoPoint : userGeopoint, innerhalbMiles: 100)

Es gibt fast 20 Benutzer innerhalb von 100 Meilen von der Position des Simulators in Cupertino, so dass das nicht das Problem ist. Hier

ist der vollständige Code:

Überschreibung func viewDidLoad() {

super.viewDidLoad() 

var userGeopoint = PFGeoPoint()

PFGeoPoint.geoPointForCurrentLocationInBackground { 
     (geoPoint: PFGeoPoint?, error: NSError?) -> Void in 

     if error == nil { 
      userGeopoint = geoPoint! 
      //print(userGeopoint) 
     } 
    } 

    let query = PFUser.query() 
    query!.whereKey("addressPoint", nearGeoPoint: userGeopoint, withinMiles: 1000) 
    query!.limit = 20 
    query!.orderByDescending("updatedAt") 
    query?.findObjectsInBackgroundWithBlock({ (objects, error) -> Void in 

     if error == nil { 

     if let users = objects { 
     for object in users { 
       if let user = object as? PFUser { 
        if user != PFUser.currentUser() { 
         print(user["addressPoint"]) 
         } 
        } 
      } 

} } else { print (Fehler) } }) }

Antwort

0

Benutzer Lage, um es paar Sekunden dauern kann, weshalb PFGeoPoint.geoPointForCurrentLocationInBackground nicht auf dem Haupt-Thread ausgeführt wird, legen Sie Ihre Abfrage im Innern, und es wird funktionieren ... Auch ich denke, dass die Abfrage von Abstand ist begrenzt nur zu 100 Meilen

PFGeoPoint.geoPointForCurrentLocationInBackground { 
    (geoPoint: PFGeoPoint?, error: NSError?) -> Void in 
    if error == nil { 
     let query = PFUser.query() 
     query!.whereKey("addressPoint", nearGeoPoint: geoPoint, withinMiles: 100) 
     //... rest of the query 
    } 
}