我遇到了获取用户位置然后为该课程运行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
}
}
}
}
谢谢。
答案 0 :(得分:0)
在geoQuery完成后,您没有加载表。
此外,您无需在geoQuery块内再次创建查询。您可以调用Parse的loadObjects
方法,该方法将使用queryForTable()
方法重新加载数据。
PFGeoPoint.geoPointForCurrentLocationInBackground {
(point:PFGeoPoint!, error:NSError!) -> Void in
if error == nil {
currentLocation = point
self. loadObjects()
}
}
currentLocation
在PFGeoPoint