【发布时间】:2018-04-22 14:13:28
【问题描述】:
我希望 Geofire 做以下两件事之一; 1 - 在 Firebase 中查找场地位置,如果不存在,则 2 - 创建一个。
所以澄清一下:
- 用户根据当前地点创建帖子。
- Geofire 检查它是否已经记录了该地理位置的场地(经度和纬度坐标)。如果它确实将该位置存储在 Firebase 中,那么它会将用户的新帖子添加到同一地点。
- 如果 Geofire 未在 Firebase 中检测到某个位置,它会创建一个新地点并将帖子附加到该地点。
我已将我的地点详细信息与我的 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)
}
然后在我的 post 方法中调用:
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
}
【问题讨论】:
-
能分享一下你写的代码吗?
-
@RenaudTarnec 我添加了代码
-
@Brewsky 在您的代码中,您实际上是在“检查它是否已经记录了该地理位置的地点(经纬度坐标)”?
-
@RenaudTarnec 我打算使用 var circleQuery = geoFire.queryAtLocation(center, withRadius: 0.6) 但我希望有更简单的东西。这是唯一的解决方案吗?
-
@Brewsky 我已经添加了答案。
标签: ios swift firebase firebase-realtime-database geofire