我正在使用 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,这将被触发,这可能很烦人。(因为它不是观察单个事件) 2. 我想实现分页。我想到的是首先从我周围下载所有地理数据,然后通过分页将它们加载到我的应用程序中。
所以我的问题是
有没有办法检测geoQuery中firebase中的所有条目都已下载?假设我在 firebase 中有未知数量的 geoData,我会在下载所有内容时收到通知,以便我可以关闭 geoQuery。
有没有办法关闭geoQuery?