저는 사용자가 내 앱에서 설정하고 FireBase에 저장할 수있는 지정된 반지름을 검색하기 위해 GeoFire를 사용하고 있습니다. 페이지가로드되면 GeoFire 쿼리를 실행하기 전에 Firebase에서 반지름을 가져옵니다. 그러나 아래 코드를 실행하면 다음 오류가 발생합니다. 'NSInvalidArgumentException'이라는 캐치되지 않은 예외로 인해 응용 프로그램을 종료합니다. 이유 : '정밀도가 23 미만이어야합니다!'GeoFire에서 저장된 검색 반경을 올바르게 사용하려면 어떻게해야합니까?
일부 전략적으로 배치 된 print 문을 가지고 놀면서, GeoFire 쿼리가 실행될 때 searchRadius가 0으로 반환되어 비동기 적재가 실행중인 것으로 의심됩니다.
내 searchRadius가 0이기 때문에이 오류가 발생합니다. 그렇다면 내 사용자의 검색 반경을 차지하는 FireBase 블록이 내 GeoFire 쿼리보다 먼저 실행되는지 어떻게 확인할 수 있습니까?
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
감사! 당신의 설명은 대단히 감사합니다. –