Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何让用户靠近我在geofire、Firebase中的位置_Swift_Firebase_Location_Geofire - Fatal编程技术网

Swift 如何让用户靠近我在geofire、Firebase中的位置

Swift 如何让用户靠近我在geofire、Firebase中的位置,swift,firebase,location,geofire,Swift,Firebase,Location,Geofire,有了这段代码,我只从Geolocs得到一个值,就是key和location,而不是附近的位置。这有什么问题吗 var geoFireRef: DatabaseReference? var geoFire: GeoFire? var myQuery: GFQuery? func Geofire() { geoFireRef = Database.database().reference().child("Geolocs") geoFire = GeoF

有了这段代码,我只从Geolocs得到一个值,就是key和location,而不是附近的位置。这有什么问题吗

var geoFireRef: DatabaseReference?
    var geoFire: GeoFire?
    var myQuery: GFQuery?


func Geofire() {

        geoFireRef = Database.database().reference().child("Geolocs")
    geoFire = GeoFire(firebaseRef: geoFireRef!)
        self.geoFire?.setLocation(currentLocation!, forKey:Auth.auth().currentUser!.uid)

    myQuery = geoFire?.query(at: currentLocation!, withRadius: 100)

    myQuery?.observe(.keyEntered, with: { (key, location) in


        if key != Auth.auth().currentUser?.uid
        {
            let ref = Database.database().reference().child("Users").child(key)

            ref.observeSingleEvent(of: .value, with: { (snapshot) in
                let id = snapshot.key
            })

        }

    })

}

使用键将GeoFire位置与所有位置分开,以引用其他附加数据,例如用户信息或帖子信息。因为混合静态和动态数据并不是存储数据的最有效方式

请参见此处的“我的数据结构和查询”:


我不明白你的意思。你的意思是我有一个单独设置的位置,并在其他函数/类中进行查询???是的。使用您正在执行的.uid键添加您的位置。但是,请将有关用户的所有其他信息分开。然后,当你运行一个查询时,你将得到一堆密钥,然后你可以引用它们并获得额外的信息。我得到了,但我没有得到,我只得到一个密钥,这是我当前的用户ID,我在Geolock中设置了它。这个问题有点不清楚,没有足够的数据来真正理解这个问题;一致引用您的类变量(self.geoFire和geoFire),我不确定它们不只是let语句的原因,如let geofiref=…,currentLocation未定义,因此我们不知道这是什么,不要在用户节点中存储坐标,因为这是geolocs节点的用途。另外,检查两个答案哦,和你的屏幕截图,你只有一个位置的用户,这是这个(管理员)用户。如果有更多的数据,你可能应该包括它作为文本请,没有截图。请不要在您的问题中包含图像。将代码和结构作为文本包含。要获取Firebase结构,请使用Firebase控制台->导出JSON并复制粘贴结构片段。请参阅您的第一条评论链接,帮助我了解我面临的实际问题。谢谢