在查询解析表之前获取位置查询

时间:2015-07-05 07:13:34

标签: ios xcode swift parse-platform location

我遇到了获取用户位置然后为该课程运行PFQuery的问题。我遇到的问题是当我启动应用程序时,tableview加载一个空数据集。我知道查询工作正常,因为当我使用下拉方法刷新tableview时,它会使用正确的位置加载正确的数据集。

所以我怀疑当我第一次启动应用程序时,查询在获取位置之前运行,但是在我手动刷新tableview之后,已经从位置管理器获取了位置并且加载了正确的数据集。

我引用了这两篇帖子......

Location Query in Parse TableView

Locations around the users with parse

但是,将PFGeoPoint.geoPointForCurrentLocationInBackground放在viewDidLoad中并将查询放在其中或将其放在一个单独的函数内部时(我有一个单独的查询)会遇到很多麻烦名为queryForData的函数允许pull刷新工作,但我在添加PFGeoPoint.geoPointForCurrentLocationInBackground时删除了该函数... ...

无论我做什么,查询都无法成功运行,因为加载了类中的所有行,而不仅仅是应用于用户当前位置的数据行。

  override func queryForTable() -> PFQuery! {

    let query = PFQuery(className: "Posts")
    if let userLocation = currLocation {
        query.whereKey("location", nearGeoPoint: PFGeoPoint(latitude: userLocation.latitude, longitude: userLocation.longitude), withinKilometers: 5)
        query.orderByDescending("createdAt")
    } else {

    }
    return query
}

然后我使用了我发布的其他stackoverflow问题中的代码...

PFGeoPoint.geoPointForCurrentLocationInBackground {
(point:PFGeoPoint!, error:NSError!) -> Void in
if error == nil {
    //Point contains the user's current point

    //Get a max of 100 of the restaurants that are within 5km,
    //ordered from nearest to furthest
    var query = PFQuery(className: "Posts")
    query.limit = 100
    query.whereKey("location", nearGeoPoint: point, withinKilometers: 5.0)
    query.findObjectsInBackgroundWithBlock{
        (objects: [AnyObject]!, error: NSError!) -> Void in
        if (error == nil) {
            //objects contains the restaurants
        }
    }
}
}

谢谢。

1 个答案:

答案 0 :(得分:0)

在geoQuery完成后,您没有加载表。

此外,您无需在geoQuery块内再次创建查询。您可以调用Parse的loadObjects方法,该方法将使用queryForTable()方法重新加载数据。

PFGeoPoint.geoPointForCurrentLocationInBackground {
(point:PFGeoPoint!, error:NSError!) -> Void in
    if error == nil {
        currentLocation = point
        self. loadObjects()
    }
}

currentLocationPFGeoPoint

类型的控制器中应该是全局的