2016-07-29 3 views
1

Я пытаюсь найти всех пользователей на определенном расстоянии от PFGeopoint текущего пользователя. Запрос возвращает объекты при использовании:inMiles не работает с запросом Parse PFGeopoint в Swift

запроса .whereKey ("addressPoint", nearGeoPoint: userGeopoint)

но не возвращает никаких объектов при использовании:

запроса .whereKey ("addressPoint", nearGeoPoint : userGeopoint, inMiles: 100)

Находясь в пределах 100 миль от места симулятора в Купертино, около 20 пользователей находятся в радиусе 100 миль, так что это не проблема.

Вот полный код:

переопределение функ viewDidLoad() {

super.viewDidLoad() 

вар 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"]) 
         } 
        } 
      } 

} } еще { печать (ошибка) } }) }

ответ

0

, чтобы получить местоположение пользователя может занять пару секунд, поэтому PFGeoPoint.geoPointForCurrentLocationInBackground не работает в главном потоке, поставить запрос в том, что и он будет работать ... И я думаю, что запрос на расстояние ограничено до 100 миль

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 
    } 
} 
Смежные вопросы