我希望Geofire做两件事之一; 1 - 在Firebase中查找场地位置,如果不存在,2 - 创建一个。
所以澄清一下:
我已将我的场地细节与我的Geofire坐标分开,但我不明白如何让Geofire区分Firebase中是否存在此位置的条目。
在我运行我的应用程序的那一刻,每次按照下面的屏幕抓取创建一个新条目,这显然不是我想要的。
以下是代码:
首先我设置名称和目录的引用(我单独设置它们,因为我在几个实例中使用名称ref)
override func viewDidLoad() {
super.viewDidLoad()
geoFireNameRef = Database.database().reference().childByAutoId()
geoFireRef = Database.database().reference().child("PostLocations").child("Coordinates")
geoFire = GeoFire (firebaseRef: geoFireRef)
}
然后在我的帖子方法中我打电话:
func savePost () {
let location = CLLocation.init(latitude: lat!, longitude: long!) //Get Coordinates
geoFire.setLocation(location, forKey: self.geoFireNameRef.key)// Save Coordinates
postLocationDB.child(self.geoFireNameRef.key).setValue(locationDictionary) // Save Venue Details
}
答案 0 :(得分:1)
所以我知道你想检查是否有一个现有几个坐标的场地。我建议将这对夫妇存储在您的Coordinates / {venueId}节点下,作为一个由两个坐标组成的额外字段,如下所示:
- Coordinates
- -LAWR2LH.....
- l
- 0: 22.345
- 1: 22.345
- compoundL: "22.345-22.345"
然后直接使用queryOrderedByChild和queryEqualToValue组合的查询查询实时数据库,以查找是否已存在compoundL = 22.345-22.345的Coordinates / Venue节点。