我使用geoFire3.0根据用户位置使用以下代码查询附近的数据
let ref = DataService.ds.REF_LOCATION
let geoFire = GeoFire(firebaseRef: ref)
let center = CLLocation(latitude: lat, longitude: long)
let circleQuery = geoFire.queryAtLocation(center, withRadius: SEARCH_RADIUS)
_ = circleQuery.observeEventType(GFEventType.KeyEntered) { (key: String!, location: CLLocation!) in
问题是每次找到符合条件的数据时都会触发此查询。我必须跟踪所有数据并将其放入数组中并使用sortInPlace对其进行排序。如果我有少量数据并希望下载所有内容并在所有内容排序后使用数据,这一切都很好。
但是,我看到了两个主要问题 1.如果搜索范围内的任何人向firebase添加了新条目,则会触发此条目,这可能很烦人。 (因为没有观察单一事件) 我想实现分页。我想到的是先从我身边下载所有geoData,然后在我的应用程序中加载分页。
所以我的问题是
有没有办法检测geoQuery中firebase中的所有条目都已下载?假如我在firebase中有未知数量的geoData,我会在下载所有内容时收到通知,因此我可以关闭geoQuery。
有没有办法关闭geoQuery?