Ich benutze GeoFire, um einen bestimmten Radius zu suchen, den der Benutzer in meiner App einstellen und auf FireBase speichern kann. Wenn die Seite geladen wird, erhalte ich vor dem Ausführen der GeoFire-Abfrage den Radius von Firebase. Wenn ich den folgenden Code ausführe, erhalte ich den folgenden Fehler: Beenden der App aufgrund der nicht abgefangenen Ausnahme "NSInvalidArgumentException", Grund: "Die Genauigkeit muss kleiner als 23 sein!"Wie verwende ich einen gespeicherten Suchradius mit GeoFire richtig?
Durch das Herumspielen einiger strategisch platzierter print-Anweisungen sieht es so aus, als ob der searchRadius zum Zeitpunkt der Ausführung der GeoFire-Abfrage als 0 zurückkehrt, was mich vermuten lässt, dass asynchrones Laden im Spiel ist.
Meine Frage ist, bekomme ich diesen Fehler aufgrund meines searchRadius 0, und wenn ja, wie kann ich sicherstellen, dass der FireBase-Block, der den Suchradius meines Benutzers ergreift, vor meiner GeoFire-Abfrage läuft?
self.ref.childByAppendingPath("users/\(self.ref.authData.uid)/searchRadius").observeEventType(.Value, withBlock: { snapshot in
self.searchRadius = snapshot.value as! Double
})
let center = CLLocation(latitude: 37.331469, longitude: -122.029825)
let circleQuery = geoFire.queryAtLocation(center, withRadius: self.searchRadius)
circleQuery.observeEventType(GFEventTypeKeyEntered, withBlock: { (key: String!, location: CLLocation!) in
//Do code for each result returned
}) //End GeoFire query
Vielen Dank! Ihre Erklärung wird sehr geschätzt. –